Подтвердить что ты не робот

Как изменить заголовок фильтра Django

У меня есть фильтр (один из стандартных и нестандартных)

Можно ли просто изменить заголовок фильтра, не записывая полный новый настраиваемый фильтр?

Потому что единственная настройка, которая мне нужна из фильтра, - это его название. Это должен быть способ сделать это, не переписывая весь фильтр и поисковые запросы.

4b9b3361

Ответ 1

Вам нужно будет создать собственный класс фильтров, но вы можете фактически реализовать собственный класс фильтра factory, который вы можете использовать везде, где вам нужен фильтр с пользовательским названием:

from django.contrib import admin

def custom_titled_filter(title):
    class Wrapper(admin.FieldListFilter):
        def __new__(cls, *args, **kwargs):
            instance = admin.FieldListFilter.create(*args, **kwargs)
            instance.title = title
            return instance
    return Wrapper

После этого в вашем классе ModelAdmin:

list_filter = (
    ('fieldname', custom_titled_filter('My Custom Title')),
    'plain_field',
    ...
)

(Обратите внимание, что настраиваемый фильтр - это не просто имя поля, а кортеж (field_name, CustomFilterClass), вы просто получаете свой CustomFilterClass от custom_titled_filter() factory)

Ответ 2

если вы определяете метки в своих полях в своей модели, вы должны увидеть изменение параметров фильтра: Например,

is_staff = models.BooleanField(verbose_name="My Best Staff's", default=False)

Здесь "Мой лучший персонал" - это метка фильтра.