我正在尝试在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,并将它们全部放在相同的字段集中...但是我认为应该有一个更好的解决方案。
谢谢
答案 0 :(得分:0)
您可以使用 django-autocomplete-light
库
https://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