自定义Django admin(后台管理模块)的Filter过滤器

模型类为Hero,需求为在Admin中实现Hero类以gender字段进行过滤。

 

admin.py中的代码如下:

复制代码
from django.contrib import admin
from .models import Hero

@admin.register(Hero) #注册模型类Hero
class HeroAdmin(admin.ModelAdmin):
    '''管理Hero表在admin模块中的设置'''
    list_display = ('id', 'name, 'age', 'gender')
    search_fields = ('id', 'name')
    
    class GenderFilter(admin.SimpleListFilter):
        title = '英雄性别' #过滤标题显示为"以 英雄性别"
        parameter_name = 'gender' #过滤器使用的过滤字段
    
        def lookups(self, request, model_admin):
            '''针对字段值设置过滤器的显示效果'''
            return (
                (True, 女),
                (False, 男),
            )
        
        def queryset(self, request, queryset):
            '''定义过滤器的过滤动作'''
            if self.value() == True:
                return self.model().objects.filter(gender=True).all()
            elif self.value() == False:
                return self.model().objects.filter(gender=False).all()
    
    list_filter = (GenderFilter)
复制代码

 实现的效果图如下所示:

 

posted @   韩晓萌  阅读(1984)  评论(2编辑  收藏  举报
编辑推荐:
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
阅读排行:
· 从零开始开发一个 MCP Server!
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档
点击右上角即可分享
微信分享提示