11、Django Admin启用对计算字段的过滤

重新定义admin.py中的Hero管理模型如下:

python 复制代码
@admin.register(Hero)
class HeroAdmin(admin.ModelAdmin):
    list_display = ("name", "is_immortal", "category", "origin", "is_very_benevolent")
    list_filter = ("is_immortal", "category", "origin",)
    def is_very_benevolent(self, obj):
        return obj.benevolence_factor > 75

它具有一个计算字段is_very_benevolent,Admin后台显示如下:

我们已经在来自模型属性字段上添加了过滤,但是还想在计算出的字段上添加过滤。为此,我们可以通过继承SimpleListFilter类实现:

python 复制代码
class IsVeryBenevolentFilter(admin.SimpleListFilter):
    title = 'is_very_benevolent'
    parameter_name = 'is_very_benevolent'
    def lookups(self, request, model_admin):
        return (
            ('Yes', 'Yes'),
            ('No', 'No'),
        )
    def queryset(self, request, queryset):
        value = self.value()
        if value == 'Yes':
            return queryset.filter(benevolence_factor__gt=75)
        elif value == 'No':
            return queryset.exclude(benevolence_factor__gt=75)
        return queryset

然后将更改list_filter为list_filter = ("is_immortal", "category", "origin", IsVeryBenevolentFilter)

这样,便可以对计算出的字段进行过滤。修改后管理后台显示如下:

如何对计算字段修改成系统自带的布尔类型显示效果,增加is_very_benevolent.boolean = True代码,HeroAdmin管理模型修改如下:

python 复制代码
@admin.register(Hero)
class HeroAdmin(admin.ModelAdmin):
    list_display = ("name", "is_immortal", "category", "origin", "is_very_benevolent")
    list_filter = ("is_immortal", "category", "origin", IsVeryBenevolentFilter)
    def is_very_benevolent(self, obj):
        return obj.benevolence_factor > 75
    is_very_benevolent.boolean = True

显示效果如下:

相关推荐
___波子 Pro Max.3 分钟前
Python获取当前脚本目录路径
python
努力成为大牛吧6 分钟前
Pycharm 接入 Deepseek API完整版教程
ide·python·pycharm
闲人编程6 分钟前
Python对象模型:一切都是对象的设计哲学
开发语言·python·模型·对象·codecapsule·下划线
二川bro11 分钟前
Python大语言模型调优:LLM微调完整实践指南
开发语言·python·语言模型
n***265611 分钟前
Windows环境下安装Redis并设置Redis开机自启
数据库·windows·redis
马克学长15 分钟前
SSM美丽华驾校信息管理系统t93d7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·驾校信息管理系统·ssm 框架
wa的一声哭了17 分钟前
Webase部署Webase-Web在合约IDE页面一直转圈
linux·运维·服务器·前端·python·区块链·ssh
张人玉27 分钟前
HandyControl使用方法
数据库·计算机视觉·handycontrol
u***276128 分钟前
【MySQL】环境变量配置
数据库·mysql·adb
坚持就完事了1 小时前
蓝桥杯中Python常用的库与模块
python·算法