如何修改Django admin filter的标题

时间:2013-06-30 15:45:17

标签: django django-admin django-filter

我有一个过滤器(其中一个默认值而非自定义)

是否可以更改过滤器的标题,而无需编写全新的自定义过滤器?

因为我需要的唯一自定义过滤器是它的标题。如果不重写整个过滤器和查找,这应该是一种方法。

2 个答案:

答案 0 :(得分:44)

需要一个自定义过滤器类,但你实际上可以实现一个自定义过滤器类工厂,你可以在任何需要带有自定义标题的过滤器的地方使用它:

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()

答案 1 :(得分:35)

如果您在模型中的字段上定义标签,则应该看到过滤器选项的更改:赞,

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

这里“我最好的员工”是过滤标签。