正常情况下 models.BooleanField 类型字段在 django admin 后台 列表页面会自动显示 绿色勾 和 红色叉,如图:
有时候我们写模型的的时候写成了其他显示文案,如果只有两种状态时,又想显示成 绿色勾 和 红色叉,可以采用如下图所示代码快速实现:
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/
Zhuoyuebiji ( 广东·深圳 )
🚩成长的时候,能帮有需要的你
我是 卓越笔记,软件测试工作者,热爱互联网,喜欢琢磨,遇到问题就一定要找到答案。我的博客主要记录学习中遇到的知识点和遇到的问题及问题的解决方法。欢迎同样热爱互联网的小伙伴们交换友链,一起探索互联网的世界 😊
为向您提供更好的服务,我们使用 Cookies。更多相关信息请查阅我们的 隐私政策 和 免责声明