Пользовательский фильтр администратора Django: получение отфильтрованного набора запросов до применения самого текущего фильтра
У меня есть классический admin.SimpleListFilter. Я хочу получить текущий отфильтрованный/отображаемый набор запросов, но до применения моего собственного фильтра, чтобы я мог показать количество результатов для каждого из моих фильтров поиска. Текущий код, приведенный ниже, всегда показывает общее количество результатов для каждого поиска, не учитывая при этом возможные другие выбранные фильтры.
class ByAssignementStatusFilter(admin.SimpleListFilter):
title = _('Assignement Status')
parameter_name = 'status__exact'
def lookups(self, request, model_admin):
choices = []
qs = model_admin.get_queryset(request)
# qs.count() is always the unfiltered amount
for key, label in Assignement.STATUS_CHOICES:
count = qs.filter(assignement__status=key).count()
label = f"{label} ({count})"
choices.append((key, label))
return choices
def queryset(self, request, queryset):
if self.value() is not None:
return queryset.filter(assignement__status=self.filter_value)
else:
return queryset