I have a filter (one of the defaults and not custom)
Is it possible just to change the title of filter, without write a full new custom filter ?
Because the only customization I need from the filter is its title. THere should be a way to do that without rewriting the whole filter and lookups.
You will need to have a custom filter class, but you can actually implement a custom filter class factory that you can use everywhere you just need a filter with a custom title:
def custom_title_filter_factory(filter_cls, title):
class Wrapper(filter_cls):
def __new__(cls, *args, **kwargs):
instance = filter_cls(*args, **kwargs)
instance.title = title
return instance
return Wrapper
After that in your ModelAdmin
class:
from django.contrib import admin
list_filter = (
('fieldname', custom_title_filter_factory(admin.RelatedFieldListFilter, 'My Custom Title')),
'plain_field',
...
)
(Note how the custom filter is not just a field name, but a tuple of (field_name, CustomFilterClass)
, you're just getting your CustomFilterClass
from your custom_titled_filter()
factory)