【问题标题】:django-autocomplete-light django 1.8 custom modelform for admindjango-autocomplete-light django 1.8 管理员自定义模型表单
【发布时间】:2015-08-25 18:01:39
【问题描述】:

我想为 django-admin 添加 OneToOne 字段的自动完成

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. 在 INSTALLED_APPS 中添加了“autocomplete_light”
  3. 覆盖 admin/base_site.html(使用自定义加载器)
  4. url(r'^autocomplete/', include('autocomplete_light.urls')), 到 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']

我错过了什么?

【问题讨论】:

  • 只是猜测可能是这个字段的问题 = ['product', 'priority', 'image'],尝试删除它并检查。
  • @chandu nope ImproperlyConfigured"禁止创建没有 'fields' 属性或 'exclude' 属性的 ModelForm"

标签: django django-autocomplete-light


【解决方案1】:

以下解决了我的问题:

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

【讨论】:

    猜你喜欢
    • 2016-03-17
    • 2014-07-11
    • 2016-03-01
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    相关资源
    最近更新 更多