I have a django admin that I am trying to change my default filter for. I have the filter displaying the data I want as default but my all button is not functioning correctly because I am returning a specific queryset when the value is None. Is there a way to have a functioning all button without changing the 'All' value?
class EmailFilter(admin.SimpleListFilter):
title = _('email category')
parameter_name = 'email_category'
def lookups(self, request, model_admin):
return (
(10, _('Forwarded')),
(8, _('Spam')),
)
def queryset(self, request, queryset):
if self.value() is not None:
return queryset.filter(email_category=self.value())
return queryset
class myAdmin(VersionAdmin):
list_filter = (EmailFilter)
class EmailFilter(admin.SimpleListFilter):
title = _('email category')
parameter_name = 'email_category'
def lookups(self, request, model_admin):
return (
(None, _('Forwarded')),
(8, _('Spam')),
('all', _('All')),
)
def queryset(self, request, queryset):
if not self.value():
return queryset.filter(email_category=10) # forwarded if None which it will be by default
elif self.value() == 'all':
return queryset
else:
return queryset.filter(email_category=self.value())