È sarà necessità di avere una classe filtro personalizzato, ma in realtà si può implementare una fabbrica di classe filtro personalizzato che è possibile utilizzare ovunque è sufficiente un filtro con un titolo personalizzato:
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
Dopo di che nella ModelAdmin
classe:
list_filter = (
('fieldname', custom_titled_filter('My Custom Title')),
'plain_field',
...
)
(si noti come il filtro personalizzato non è solo un nome di campo, ma una tupla di (field_name, CustomFilterClass)
, sei solo ottenere il vostro CustomFilterClass
fr om your custom_titled_filter()
factory)
Nessun modo ovvio, scrivere un filtro personalizzato è il modo più semplice. Altrimenti è necessario sovrascrivere 'ChangeList.get_filters' o modificare il titolo on-fly tramite Javascript. – okm
La modifica del JS sarebbe molto non pythonic. Impossibilità di traceback e cattiva durante la fase di manutenzione. – iankit