Это должно работать:
class UserProfileLanguageFilter(admin.SimpleListFilter):
title = _('Language')
parameter_name = 'languages'
def lookups(self, request, model_admin):
qs = model_admin.get_queryset(request)
# Return a list of (id, name) for lookups. We return the language_id and the string format "Language Name (Count of Users)" as the name.
return [(i, "{}({})".format(j, k)) for i, j, k in
qs.values_list('languages__id', 'languages__name').annotate(
user_count=Count('userprofile')).distinct().order_by(
'languages__name')]
def queryset(self, request, queryset):
if self.value(): # Use the lookup id we sent above; to filter
return queryset.filter(languages__id=self.value())
@admin.register(UserProfile):
class UserProfileAdmin(admin.ModelAdmin):
# ...
list_filter = (UserProfileLanguageFilter,)
Я бы определенно рекомендовал вам лучше понять Фильтр, а также набор запросов, если вы решите подобрать код напрямую.