自定义django admin过滤器只需要继承自 django.contrib.admin.SimpleListFilter 的类,你需要为其提供 title 和 parameter_name 属性,并覆盖 lookups 和 queryset 方法
class DecadeBornListFilter(admin.SimpleListFilter):
# 自定义课程结果页面按老师筛选
title = _('教师') # 过滤器标题 提示按什么筛选
parameter_name = 'teacher' # url中显示的参数
def lookups(self, request, model_admin):
# 这里是过滤器中的内容,应返回一个二元元组
# 元组子一个值是url参数的值
# 元组第二个值是人类可读的出现在过滤列表的值
user = User.objects.filter(user_type='TC').values_list('id', 'username')
return user
def queryset(self, request, queryset):
# 判断这个参数是否存在,存在就返回你需要筛选出来的内容
if self.value() == request.GET.get('teacher'):
return queryset.filter(teacher__id=self.value())