Я использую Django 2.2.8. У меня есть сущность " AppSettings " с такими атрибутами, как [ категория: str, имя: str, значение: str, описание: str ]. Пара [ категория, имя ] уникальна. Отношения между внешними ключами отсутствуют.
Теперь я хочу создать редактируемую сетку на странице администратора. И я хочу, чтобы эта сетка фильтровалась по категориям на правой панели, используя свойство list_filter . У меня есть следующие классы в admin.py:
class AppSetsListFilter(admin.SimpleListFilter):
title = 'Category'
parameter_name = 'category'
default_value = 'All'
def lookups(self, request, model_admin):
cats = set([v for v in AppSettings.objects.all().values_list('category', flat=True)])
return sorted([(c, c) for c in cats], key=lambda c: c[0])
def queryset(self, request, queryset):
if not self.value() or self.value() == 'All':
return queryset
return queryset.filter(category=self.value())
class AppSetsAdminForm(forms.ModelForm):
class Meta:
model = AppSettings
fields = ['category', 'name', 'value', 'description']
widgets = {
'value': forms.Textarea(
attrs={
'rows': '2', 'cols': '95'
}
)
}
class AppSettingsAdmin(admin.ModelAdmin):
list_display = ['category', 'name', 'value', 'description']
search_fields = ['name', 'description']
list_editable = ['value']
list_display_links = ['category']
list_filter = (AppSetsListFilter, )
def get_changelist_form(self, request, **kwargs):
return AppSetsAdminForm
У меня нет ошибок. Ячейка «Значение» доступна для редактирования. Он имеет 2-строчную текстовую область. Но панель «фильтра» не отображается, хотя отображается около 60 записей.
Я подумал, что может быть проблема с list_filter + list_editable OR list_filter + get_changelist_form. Я удалил эту опцию, но панель фильтра (справа) не появляется.