We have simple model:
class Author(models.Model):
name = models.CharField(max_length=64)
is_czech = models.BooleanField()
class Book(models.Model):
title = models.CharField(max_length=64)
author = models.ForeignKey(Author)
Create simple list filter class
class AuthorsNacionalityFilter(admin.SimpleListFilter):
title = _("Author's nacionalyty")
parameter_name = 'authors_nacionality'
def lookups(self, request, model_admin):
return (
('czech', _('Czech')),
('other', _('Others')),
)
def queryset(self, request, queryset):
if self.value() == 'czech':
return queryset.filter(author__is_czech=True)
if self.value() == 'other':
return queryset.filter(author__is_czech=False)
return queryset
And use in ModelAdmin:
class BookAdmin(models.ModelAdmin):
list_filter = (
AuthorsNacionalityFilter,
)