2

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.xx/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')), to urlpatterns
  5. モデルBannerおよびsearch_fields=['product'] を使用した autocomplete_light_registry.py、
  6. 更新されたモデルフォーム:
class BannerForm(autocomplete_light.ModelForm):
    class Meta:
        model = Banner
        fields = ['product', 'priority', 'image']
        autocomplete_fields = ['product']

私が逃したものは何ですか?

4

1 に答える 1

3

以下は私の問題を解決しました:

  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'}
于 2015-06-11T07:41:06.610 に答える