Фильтр и поля поиска в админке Django не работают
Я добавил поле загрузки файла в мой класс администратора django, который создает новые объекты другого типа. После добавления формы для этого, мои поля filter_horizontal и search_fields перестали работать. Я также не могу добавить более одного автора в книгу. Вот код для admin.py.
@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
list_display = ('title',)
ordering = ('title',)
fields = ('title', 'title_en', 'title_ru', 'authors', 'description', 'description_en', 'description_ru', 'image',
'narrators', 'age_range', 'genres', 'top_book', 'audio_files')
search_fields = ('title', 'title_en', 'title_ru')
filter_horizontal = ('authors', 'narrators')
def get_form(self, request, obj=None, **kwargs):
try:
instance = kwargs['instance']
return BookForm(instance=instance)
except KeyError:
return BookForm
def add_view(self, request, form_url="", extra_context=None):
extra_context = extra_context or {}
extra_context['form'] = self.get_form(request)
return super(BookAdmin, self).add_view(request, form_url=form_url, extra_context=extra_context)
def change_view(self, request, object_id, form_url="", extra_context=None):
extra_context = extra_context or {}
book = Book.objects.get(id=object_id)
extra_context["form"] = self.get_form(instance=book, request=request)
return super(BookAdmin, self).change_view(request, object_id, form_url=form_url, extra_context=extra_context)
def save_model(self, request, obj, form, change):
obj.save()
audio_files = request.FILES.getlist('audio_files')
chapter_count = obj.chapter_set.count()
for count, audio_file in enumerate(audio_files):
Chapter.objects.create(book=obj, audio_file=audio_file, title=f'Մաս {chapter_count + 1 + count}')
return super().save_model(request, obj, form, change)
Вот код для формы.
class BookForm(forms.ModelForm):
audio_files = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}))
class Meta:
model = Book
fields = ('title', 'title_en', 'title_ru', 'authors', 'description', 'description_en', 'description_ru', 'image', 'narrators', 'age_range', 'genres', 'top_book')
Я хочу иметь возможность добавлять новые объекты Автор и Рассказчик и осуществлять поиск по этим полям. Это перестало работать после добавления формы в админку.