前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >django admin 只有两种状态非布尔类型的字段转成布尔类型,admin 后台显示 绿色勾 和 红色叉

django admin 只有两种状态非布尔类型的字段转成布尔类型,admin 后台显示 绿色勾 和 红色叉

作者头像
卓越笔记
发布2023-02-18 14:22:39
4940
发布2023-02-18 14:22:39
举报
文章被收录于专栏:卓越笔记

正常情况下 models.BooleanField 类型字段在 django admin 后台 列表页面会自动显示 绿色勾 和 红色叉,如图:

有时候我们写模型的的时候写成了其他显示文案,如果只有两种状态时,又想显示成  绿色勾 和 红色叉,可以采用如下图所示代码快速实现:

代码语言:javascript
复制
class Resume(models.Model):
    phone_status_choice = (
        ("1", "ON"),
        ('0', 'OFF'),
    )

    name = models.CharField(unique=True, max_length=48, verbose_name="用户名称")
    phone = models.CharField(max_length=32, verbose_name="手机号码")
    email = models.EmailField(max_length=128, null=True, blank=True, verbose_name="邮箱")
    ip = models.GenericIPAddressField(null=True, blank=True, verbose_name="IP")
    phone_order = models.IntegerField(default=0, verbose_name="序号", help_text="值越小,同分类中越靠前显示")
    phone_status = models.CharField(max_length=32, choices=phone_status_choice, default="0FF", verbose_name="必定使用",
                                    help_text="一定使用该号码")
    phone_status_select = models.CharField(max_length=32, choices=phone_status_choice, default="ON",
                                           verbose_name="上传使用",
                                           help_text="上传文件时,IP 在范围之内才使用")
    note = models.CharField(max_length=256, blank=True, null=True, verbose_name="备注")
    create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
    alter_time = models.DateTimeField(auto_now=True, verbose_name='最近修改时间')

    class Meta:
        # meta 是否固定?
        # 设置的是后台显示表名  默认是类名
        verbose_name = "手机号码"

        # 是设置复数形式时显示的名称
        verbose_name_plural = "手机号码列表"

    def __str__(self):
        return "%s" % self.name

    def colored_phone_status(self):
        return self.phone_status == "ON" or self.phone_status == "1"
    colored_phone_status.boolean = True
    colored_phone_status.short_description = "必定使用"

    def colored_phone_status_select(self):
        return self.phone_status_select == "ON" or self.phone_status_select == "1"

    colored_phone_status_select.boolean = True
    colored_phone_status_select.short_description = "上传使用"

但是,如果超过两种状态,其他状态就要自己使用  format_html 单独返回 icon,具体请看:https://xieboke.net/article/98/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-3-11 1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档