我有一些我创建的列表过滤器。除了一个,所有这些都有效。课程对学生来说是一把外键。我想根据学生是否添加任何课程来过滤学生。代码是:
class ClassesAddedListFilter(admin.SimpleListFilter):
title = _('has added classes')
parameter_name = 'classes'
def lookups(self, request, model_admin):
return (
(1, 'Has Classes'),
(0, 'No Classes')
)
def queryset(self, request, queryset):
if self.value == 1:
return queryset.annotate(class_count = Count('class')).filter(class_count__gt=0)
if self.value == 0:
return queryset.annotate(class_count = Count('class')).filter(class_count=0)
过滤器在管理界面中正确呈现,当我点击其中一个过滤器选项时,它似乎正在工作(使用get参数加载新页面)但不会发生过滤(它甚至返回所有实例)虽然有些没有课程)。我检查了我在shell中应用的过滤器,它完成了我的意图。任何人都可以帮助我解决我所缺少的问题吗?