Попробуйте переопределить метод Варианты
class IgnoreAttendanceReportFilter(admin.SimpleListFilter):
[ ... ]
def choices(self, changelist):
for lookup, title in self.lookup_choices:
yield {
'selected': self.value() == str(lookup),
'query_string': changelist.get_query_string({self.parameter_name: lookup}),
'display': title,
}
Теперь значение по умолчанию будет False. Но в этом случае No не будет отмечен как выбранный. Если «Нет», выберите «Если фильтр не выбран», попробуйте использовать метод «Нет» вместо метода исправления пустого элемента в строке, удалив приведение к str. Исправлен метод, приведенный ниже.
class IgnoreAttendanceReportFilter(admin.SimpleListFilter):
[ ... ]
def choices(self, changelist):
for lookup, title in self.lookup_choices:
yield {
'selected': self.value() == lookup,
'query_string': changelist.get_query_string({self.parameter_name: lookup}),
'display': title,
}
Если для поля задано значение по умолчанию False, вам не нужно фильтровать его.
Более того, если вы фильтруете по полю из другой модели, необходимо использовать select_related. В противном случае этот фильтр будет выполнять много избыточных запросов к базе данных. Поэтому, если aula и status являются другой моделью, попробуйте использовать что-то вроде этого.
[....]
def queryset(self, request, queryset):
if self.value() == 'yes':
return queryset.select_related('aula__status').filter(aula__status__ignore_in_attendance_report=True)
return queryset
Надеюсь, это сработает.