django-autocomplete-light django 1.8自定义modelform for admin

时间:2015-06-10 12:59:29

标签: django django-autocomplete-light

我想将OneToOne字段的自动填充添加到django-admin

class Banner(models.Model):
    product = models.OneToOneField(Product, null=True)

class BannerAdmin(admin.ModelAdmin):
    form = BannerForm

在所有后续步骤({'产品' ...)的相同列表小部件后,https://django-autocomplete-light.readthedocs.org/en/stable-2.x.x/tutorial.html?highlight=tutorial#tutorial - 发生了任何变更

我做了什么:

  1. 已安装:D
  2. 已将&autocomplete_light'添加到INSTALLED_APPS
  3. 覆盖了admin / base_site.html(使用自定义加载程序)
  4. url(r' ^自动填充/',包含(' autocomplete_light.urls')),到urlpatterns
  5. autocomplete_light_registry.py,型号为横幅 search_fields = ['产品'],
  6. 更新了模型:
  7. class BannerForm(autocomplete_light.ModelForm):
        class Meta:
            model = Banner
            fields = ['product', 'priority', 'image']
            autocomplete_fields = ['product']
    

    我错过了什么?

1 个答案:

答案 0 :(得分:2)

以下解决了我的问题:

    管理员在INSTALLED_APPS 之前
  1.   INSTALLED_APPS = (
        'autocomplete_light',
        'django.contrib.admin',
      )
    
    1. autocomplete_light_registry.py
    2. class BannerAutocomplete(autocomplete_light.AutocompleteModelBase):
          model = Banner
          search_fields = ('name',)  # banner_obj.product.name
          choices = Product.objects.all()
          limit_choices = 20
      
          autocomplete_light.register(
              BannerAutocomplete,
              attrs={
                  'placeholder': _(u'имя товара'),
                  'data-autocomplete-minimum-characters': 1,
              },
          )
      
      1. 为表单中的相关字段手动选择自动填充:
      2. class BannerForm(autocomplete_light.ModelForm):
            class Meta:
                model = Banner
                fields = ['product', 'priority', 'image']
                autocomplete_names = {'product': 'BannerAutocomplete'}