Я разрабатываю приложение Django, в котором многие модели имеют внешние ключи и отношения m2m.В результате многие ModelChoiceField
отображаются в админке Django для моих моделей.Чтобы сделать выбор модели более сносным, я установил приложение django-select2 в свой проект.
Я пытался реализовать select2 во встроенных формах, которые отображает сайт администратора при редактировании связанных объектов, но форма не делаетрендеринг ModelSelect2Widget
(он делает простой выбор; он даже не включает библиотеку select2).
Я пытался создать ModelForm
в forms.py
, переопределяя виджеты соответствующих полей, затем,используя inlineformset_factory
, переменная содержала фабричный класс.Наконец, в admin.py
я добавил свой собственный встроенный набор форм, используя свойство formset
класса InlineModelAdmin
.
forms.py
class FichaTecnicaForm(forms.ModelForm):
class Meta:
model = models.FichaTecnica
exclude = ('pelicula',)
widgets = {
'responsable': ModelSelect2Widget,
'cargo': ModelSelect2Widget,
'pais': ModelSelect2Widget
}
FichaTecnicaInline = inlineformset_factory(models.Pelicula, models.FichaTecnica, form=FichaTecnicaForm)
admin.py
class FichaTecnicaInline(admin.TabularInline):
model = models.FichaTecnica
formset = forms.FichaTecnicaInline
extra = 0
# Some other code here
# This is where the inlines are invoked
class PeliculaAdmin(admin.ModelAdmin):
inlines = [
FichaTecnicaInline,
# some other inlines, not relevant...
]
Я ожидал, что во встроенном наборе форм будет отображаться виджет select2 для выбора модели, но вместо этого он отображает стандартный виджет выбора.
Заранее большое спасибо за помощь!