SimpleListFilter не влияет на форму администратора, Django 2.2.8 - PullRequest
0 голосов
/ 11 января 2020

Я использую 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. Я удалил эту опцию, но панель фильтра (справа) не появляется.

1 Ответ

0 голосов
/ 11 января 2020

Правая панель не отображается из-за костюма django.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...