Django模型中字段属性choice使用说明


Posted in Python onMarch 30, 2020

今天设计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使用说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python基础教程之常用运算符
Aug 29 Python
Python批量创建迅雷任务及创建多个文件
Feb 13 Python
利用python程序帮大家清理windows垃圾
Jan 15 Python
详解python并发获取snmp信息及性能测试
Mar 27 Python
python里使用正则表达式的组嵌套实例详解
Oct 24 Python
Python多层装饰器用法实例分析
Feb 09 Python
Python OpenCV之图片缩放的实现(cv2.resize)
Jun 28 Python
python Kmeans算法原理深入解析
Aug 23 Python
python用quad、dblquad实现一维二维积分的实例详解
Nov 20 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
Apr 22 Python
python opencv通过按键采集图片源码
May 20 Python
python unittest单元测试的步骤分析
Aug 02 Python
Django+python服务器部署与环境部署教程详解
Mar 30 #Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
Mar 30 #Python
django自定义非主键自增字段类型详解(auto increment field)
Mar 30 #Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
Mar 30 #Python
VSCode基础使用与VSCode调试python程序入门的图文教程
Mar 30 #Python
Python实现Wordcloud生成词云图的示例
Mar 30 #Python
Django ModelForm操作及验证方式
Mar 30 #Python
You might like
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
PHP实现格式化文件数据大小显示的方法
2015/01/03 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
PHP模糊查询技术实例分析【附源码下载】
2019/03/07 PHP
JavaScript 精粹读书笔记(1,2)
2010/02/07 Javascript
js拦截alert对话框另类应用
2013/01/16 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
2014/06/16 Javascript
JavaScript数组随机排列实现随机洗牌功能
2015/03/19 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
JavaScript实现DOM对象选择器
2016/09/24 Javascript
DropDownList控件绑定数据源的三种方法
2016/12/24 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
2017/03/13 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
2017/07/27 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
2018/11/09 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
2019/01/30 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python中随机函数random用法实例
2015/04/30 Python
python插入数据到列表的方法
2015/04/30 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
2017/06/16 Python
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
Python获取本机所有网卡ip,掩码和广播地址实例代码
2018/01/22 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
python实现简单坦克大战
2020/03/27 Python
深入剖析webstorage[html5的本地数据处理]
2016/07/11 HTML / CSS
Collection和Collections的区别
2016/05/02 面试题
毕业生就业意向书
2014/04/01 职场文书
2014年三万活动总结
2014/04/26 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
创业计划书之电动车企业
2019/10/11 职场文书
PHP判断是否是json字符串
2021/04/01 PHP
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python