Django模型中字段属性choice使用说明
2020-03-31 12:05
1396 查看
今天设计models时,用到了choice这个属性,用来限制用户做出选择的范围。比如说性别的选择(男或女)。
class User(AbstractUser): 。。。 sex = models.CharField(verbose_name='性别',max_length=5,choices=(('male','男'),('female','女')),default='male')
choice接收一个元组(保证值不可变),同理每一个选项也是由一个元组(value,display_name)构成。显而易见,display_name就是要在页面中展示的。
如何取到value和displayname?
比如说实例一个User对象user,则如示user.sex = value,user.get_sex_display() = display_name,通过属性取value,通过 get_属性_display()方法取display_name。
在模板中可以通过模板语言 {{ user.sex }}很简单地显示value,但不能直接调用 get_属性_display()方法(模板毕竟是模板语言)
只能自定义过滤器,顺便提一句django中是不能直接调用函数的,可以通过自定义filter来实现(template_filters.py)
@register.filter(name='displayName') def displayName(value, arg): return eval('value.get_'+arg+'_display()')#eval字符串方法了解一下
模板中使用{{ user|displayName:'sex'}} 就OK(user是传入的变量)。
补充知识:django中choices字段获取对应字段值
如下所示:
class Area(models.Model): Area_Level = ( (0, u'全国'), (1, u'省、直辖市'), (2, u'市、直辖市区'), (3, u'区、县等'), ) areaname = models.CharField(max_length=30,unique=True, verbose_name='区域名称') code = models.CharField(max_length=20,blank=True, default="", verbose_name='区域代码') parentid = models.IntegerField(verbose_name='父级id', null=True) level = models.IntegerField(choices=Area_Level,verbose_name='层级', null=True)
object.get_level_display()
以上这篇Django模型中字段属性choice使用说明就是小编分享给大家的全部内容了,希望能给大家一个参考
您可能感兴趣的文章:
相关文章推荐
- Django中ORM模型总结(二)[模型类的对应关系,模型类的属性,字段类型]
- python-django 模型model字段类型说明
- Django 模型类中属性字段的限制
- Django模型层字段类型、字段属性,对数据库表进行增、删、改、查操作方法(models)
- Django与AJAX-choice字段-MTV和MVC模型-sweetalert搭建页面
- Django 数据模型字段及属性
- Django入门-5:模型的基本使用2-字段
- django,模型文件新增中文字段说明报错问题
- python-django 模型model字段类型说明
- 咸鱼笔记—Django模型(字段属性)
- 使用信号监控 Django 模型对象字段值的变化
- django中ORM模型常用的字段的使用方法
- python-django 模型model字段类型说明
- python-django 模型model字段类型说明
- django扩展已有模型的字段
- 为 Analysis Services 数据库使用扩展字段属性(SQL Server 2005 联机丛书(2008 年 11 月))
- javascript中的prototype属性使用说明(函数功能扩展)
- marquee属性的使用说明
- CSS属性 - white-space 空白属性使用说明
- prototype属性使用说明