我有过滤(默认设置之一,不是自定义的)
有没有可能仅仅更改过滤的标题,而不写一个全新的定制过滤?
因为我唯一需要从过滤定制的就是它的标题.应该有一种方法可以在不重写整个过滤和查找的情况下做到这一点.
我有过滤(默认设置之一,不是自定义的)
有没有可能仅仅更改过滤的标题,而不写一个全新的定制过滤?
因为我唯一需要从过滤定制的就是它的标题.应该有一种方法可以在不重写整个过滤和查找的情况下做到这一点.
你需要有一个定制的过滤类,但是你实际上可以实现一个定制的过滤类工厂,只要你需要一个带有定制标题的过滤,你就可以在任何地方使用它:
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)
的元组,您只需要从custom_titled_filter()
工厂获得CustomFilterClass
)