django autocomplete_fields在TabularInline中无效(但在StackedInline中有效)

时间:2019-03-24 13:55:50

标签: django autocomplete django-autocomplete-light

我正在尝试在TabularInine中使用自动填充字段

在我的代码下面:

class PersonInstitutionsInline(admin.TabularInline):
    autocomplete_fields = ['institution']
    model = PersonInstitution
    extra = 0

渲染时,下拉列表完全为空,没有错误(javacsript或python)

如果我对StackedInline使用相同的功能,则它可以正常工作

在检查模板时,我怀疑是因为stack.html使用{% include "admin/includes/fieldset.html" %}而tabular.html使用{{ field.field }}

另外请注意,如果我尝试以任何内联方式使用django-autocomplete-light形式

inlines.js:20 Uncaught TypeError: Cannot read property 'fn' of undefined
    at inlines.js:20
    at inlines.js:298

在python中出现错误

MediaOrderConflictWarning: Detected duplicate Media files in an opposite order:
admin/js/autocomplete.js
admin/js/admin/DateTimeShortcuts.js
  MediaOrderConflictWarning,

我正在使用Django 2.1.7版本

任何人都有类似的问题,或者是否有解决方案?

当前我正在使用的解决方法是StackedInline,并将它们全部放在相同的字段集中...但是我认为应该有一个更好的解决方案。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用 django-autocomplete-lighthttps://django-autocomplete-light.readthedocs.io/en/master/tutorial.html

<块引用>
from dal import autocomplete

from django import forms


class PersonForm(forms.ModelForm):
    class Meta:
        model = Person
        fields = ('__all__')
        widgets = {
            'birth_country': autocomplete.ModelSelect2(url='country-autocomplete')
        }

在管理中使用自动完成我们可以使 ModelAdmin 使用我们的 形式,即:

from django.contrib import admin

from your_person_app.models import Person
from your_person_app.forms import PersonForm


class PersonAdmin(admin.ModelAdmin):
    form = PersonForm

admin.site.register(Person, PersonAdmin)

请注意,这也适用于内联,即:

class PersonInline(admin.TabularInline):
    model = Person
    form = PersonForm