Bạn sẽ cần phải có một lớp lọc tùy chỉnh, nhưng bạn thực sự có thể thực hiện một nhà máy lớp lọc tùy chỉnh mà bạn có thể sử dụng ở khắp mọi nơi bạn chỉ cần một bộ lọc với một tiêu đề tùy chỉnh:
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
Sau đó trong ModelAdmin
lớp học của bạn:
list_filter = (
('fieldname', custom_titled_filter('My Custom Title')),
'plain_field',
...
)
(Lưu ý cách các bộ lọc tùy chỉnh không chỉ là một tên trường, nhưng một tuple của (field_name, CustomFilterClass)
, bạn chỉ nhận được CustomFilterClass
fr của bạn om nhà máy custom_titled_filter()
của bạn)
Không có cách nào rõ ràng, viết bộ lọc tùy chỉnh là cách dễ nhất. Nếu không, bạn cần ghi đè 'ChangeList.get_filters' hoặc sửa đổi tiêu đề trực tuyến thông qua Javascript. – okm
Sửa đổi JS sẽ rất không phải là pythonic. Không thể traceback và xấu trong giai đoạn bảo trì. – iankit