django-autocomplete-light django 1.8 管理员自定义模型

django-autocomplete-light django 1.8 custom modelform for admin

我想将 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 - 在所有以下步骤后发生任何变化('product' 的相同列表小部件 ...):

我做了什么:

  1. 已安装 :D
  2. 已将 'autocomplete_light' 添加到 INSTALLED_APPS
  3. 已覆盖 admin/base_site.html(使用自定义加载程序)
  4. url(r'^autocomplete/', include('autocomplete_light.urls')), to urlpatterns
  5. autocomplete_light_registry.py 模型 Bannersearch_fields=['product'],
  6. 更新模型:
class BannerForm(autocomplete_light.ModelForm):
    class Meta:
        model = Banner
        fields = ['product', 'priority', 'image']
        autocomplete_fields = ['product']

我错过了什么?

以下解决了我的问题:

  1. 在 INSTALLED_APPS
  2. 的管理员之前
  INSTALLED_APPS = (
    'autocomplete_light',
    'django.contrib.admin',
  )
  1. autocomplete_light_registry.py
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. 手动select自动完成表单中的相关字段:
class BannerForm(autocomplete_light.ModelForm):
    class Meta:
        model = Banner
        fields = ['product', 'priority', 'image']
        autocomplete_names = {'product': 'BannerAutocomplete'}