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 yield使用方法示例
Dec 04 Python
Windows上使用virtualenv搭建Python+Flask开发环境
Jun 07 Python
python smtplib发送带附件邮件小程序
May 22 Python
django admin 后台实现三级联动的示例代码
Jun 22 Python
完美解决在oj中Python的循环输入问题
Jun 25 Python
tensorflow 打印内存中的变量方法
Jul 30 Python
python实现连续图文识别
Dec 18 Python
python的re模块使用方法详解
Jul 26 Python
Python:合并两个numpy矩阵的实现
Dec 02 Python
Keras使用tensorboard显示训练过程的实例
Feb 15 Python
python3 实现mysql数据库连接池的示例代码
Apr 17 Python
Python基础之变量的相关知识总结
Jun 23 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中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
Laravel框架实现发送短信验证功能代码
2016/06/06 PHP
PHP实现字符串的全排列详解
2019/04/24 PHP
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
Nodejs中自定义事件实例
2014/06/20 NodeJs
node.js下when.js 的异步编程实践
2014/12/03 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
JavaScript头像上传插件源码分享
2016/03/29 Javascript
jQuery实现页面滚动时智能浮动定位
2017/01/08 Javascript
jQuery validate 验证radio实例
2017/03/01 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
JavaScript数组和对象的复制
2017/03/21 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
javascript实现前端成语点击验证优化
2020/06/24 Javascript
javascript 数组(list)添加/删除的实现
2020/12/17 Javascript
使用Python下的XSLT API进行web开发的简单教程
2015/04/15 Python
python实现获取Ip归属地等信息
2016/08/27 Python
Python3单行定义多个变量或赋值方法
2018/07/12 Python
Python 获取div标签中的文字实例
2018/12/20 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
使用python Telnet远程登录执行程序的方法
2019/01/26 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
Python接口开发实现步骤详解
2020/04/26 Python
python自定义函数def的应用详解
2020/06/03 Python
Python try except else使用详解
2021/01/12 Python
澳大利亚网上玩具商店:Mr Toys Toyworld
2018/03/25 全球购物
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
一月红领巾广播稿
2014/02/11 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers
MYSQL常用函数介绍
2022/05/05 MySQL