0
点赞
收藏
分享

微信扫一扫

django admin自定义过滤器的用法

颜路在路上 2022-01-04 阅读 45

自定义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())
举报

相关推荐

0 条评论