ian*_*kit 33 django django-admin django-filter
我有一个过滤器(默认值之一,而不是自定义)
是否可以只更改过滤器的标题,而无需编写全新的自定义过滤器?
因为我需要的唯一自定义过滤器是它的标题.如果不重写整个过滤器和查找,应该是一种方法.
lan*_*nzz 53
您将需要一个自定义过滤器类,但您实际上可以实现一个自定义过滤器类工厂,您可以在任何需要带有自定义标题的过滤器的地方使用它:
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
Run Code Online (Sandbox Code Playgroud)
在你的ModelAdmin班级之后:
list_filter = (
('fieldname', custom_titled_filter('My Custom Title')),
'plain_field',
...
)
Run Code Online (Sandbox Code Playgroud)
(注意:自定义过滤器是多么的不只是一个字段名,而是一个元组(field_name, CustomFilterClass),你只是让你CustomFilterClass从你的custom_titled_filter()工厂)
Yog*_*tpl 39
如果您在模型中的字段上定义标签,您应该看到过滤器选项的更改:赞,
is_staff = models.BooleanField(verbose_name="My Best Staff's", default=False)
Run Code Online (Sandbox Code Playgroud)
这里"我最好的员工"是过滤标签.