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使用random和tertools模块解一些经典概率问题
Jan 28 Python
深入解析Python中的集合类型操作符
Aug 19 Python
Python使用pylab库实现画线功能的方法详解
Jun 08 Python
Python实现控制台中的进度条功能代码
Dec 22 Python
Python 使用with上下文实现计时功能
Mar 09 Python
python实现电脑自动关机
Jun 20 Python
pytorch: tensor类型的构建与相互转换实例
Jul 26 Python
Python sorted函数详解(高级篇)
Sep 18 Python
Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析
Sep 20 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
Jan 13 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
Feb 27 Python
python之django路由和视图案例教程
Jul 26 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
Zend Studio (eclipse)使用速度优化方法
2011/03/23 PHP
PHP原生模板引擎 最简单的模板引擎
2012/04/25 PHP
php多维数组去掉重复值示例分享
2014/03/02 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
微信支付PHP SDK ―― 公众号支付代码详解
2016/09/13 PHP
js下通过getList函数实现分页效果的代码
2010/09/17 Javascript
JQUERY设置IFRAME的SRC值的代码
2010/11/30 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
jQuery实现鼠标划过修改样式的方法
2015/04/14 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
浅谈EasyUi ComBotree树修改 父节点选择的问题
2016/11/07 Javascript
js 获取图像缩放后的实际宽高,位置等信息
2017/03/07 Javascript
JavaScript实现重力下落与弹性效果的方法分析
2017/12/20 Javascript
用p5.js制作烟花特效的示例代码
2018/03/21 Javascript
详解JS浏览器事件循环机制
2019/03/27 Javascript
vue中使用极验验证码的方法(附demo)
2019/12/04 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
利用Python开发微信支付的注意事项
2016/08/19 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
Django框架安装方法图文详解
2019/11/04 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
Python hashlib和hmac模块使用方法解析
2020/12/08 Python
HTML5中5个简单实用的API
2014/04/28 HTML / CSS
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
微软台湾官方网站:Microsoft台湾
2018/08/15 全球购物
中学教师岗位职责
2013/11/26 职场文书
创业计划书中要认真思考的问题
2013/12/28 职场文书
幼儿园儿童节活动主持词+串词大全
2014/03/21 职场文书
户外宣传策划方案
2014/05/25 职场文书
市场推广策划方案
2014/06/02 职场文书
篮球兴趣小组活动总结
2014/07/07 职场文书
董事长新年致辞
2015/07/29 职场文书
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle
Python基础之条件语句详解
2021/06/16 Python