Как создать пользовательский фильтр в Django Admin Model?
Я пытаюсь создать пользовательский фильтр с использованием некоторых селекторов на модели под названием Foo.
У меня есть простая страница Admin для этой модели, созданная с помощью:
class FooAdmin(admin.ModelAdmin):
list_filter = ["created_at", CustomFilter]
Я хочу создать CustomFilter, в котором пользователь может выбрать запуск этого пользовательского запроса в качестве фильтра следующим образом:
У меня есть нечто подобное, но оно требует имя_параметра, что ограничивает его одним атрибутом для фильтрации в модели Foo. Есть ли способ обойти это?:
class CustomListFilter(admin.SimpleListFilter):
def lookups(
self,
request,
model_admin,
) -> List[Tuple[str, str]]:
return [
("getCustomFilter", ("True")),
]
def queryset(self, request: Any, queryset: QuerySet) -> Optional[QuerySet]:
if self.value() == "getCustomFilter":
return Foo.selector.order_by_something().distinct_on_something()
return queryset
parameter_name
это не важно для вашего сценария, поэтому вы можете установить это значение
так
class CustomListFilter(admin.SimpleListFilter):
title='By Use Custom Filter'
parameter_name='apply'
def lookups(
self,
request,
model_admin,
) -> List[Tuple[str, str]]:
return [
("getCustomFilter", ("True")),
]
def queryset(self, request: Any, queryset: QuerySet) -> Optional[QuerySet]:
if self.value():
return Foo.objects.filter(yourFilter)