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生成随机验证码(中文验证码)示例
Apr 03 Python
python实现无证书加密解密实例
Oct 27 Python
Python中的lstrip()方法使用简介
May 19 Python
PyQt5打开文件对话框QFileDialog实例代码
Feb 07 Python
Django rest framework工具包简单用法示例
Jul 20 Python
python使用tornado实现简单爬虫
Jul 28 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
Dec 29 Python
Python+OpenCV采集本地摄像头的视频
Apr 25 Python
Python编程中类与类的关系详解
Aug 08 Python
Python小程序 控制鼠标循环点击代码实例
Oct 08 Python
Python生成器常见问题及解决方案
Mar 21 Python
python中selenium库的基本使用详解
Jul 31 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获取文件大小的方法
2014/02/26 PHP
php统计时间和内存使用情况示例分享
2014/03/13 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
2014/07/14 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
2018/08/21 PHP
传智播客学习之java 反射
2009/11/22 Javascript
javascript处理a标签超链接默认事件的方法
2015/06/29 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
AngularJS中$watch和$timeout的使用示例
2016/09/20 Javascript
jQuery 实现鼠标画框并对框内数据选中的实例代码
2017/08/29 jQuery
JS实现手写parseInt的方法示例
2017/09/24 Javascript
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
解决vue热替换失效的根本原因
2018/09/19 Javascript
pm2发布node配置文件ecosystem.json详解
2019/05/15 Javascript
koa2+vue实现登陆及登录状态判断
2019/08/15 Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
2020/01/22 Javascript
python Pygame的具体使用讲解
2017/11/03 Python
Python识别快递条形码及Tesseract-OCR使用详解
2019/07/15 Python
python 标准差计算的实现(std)
2019/07/29 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
python 追踪except信息方式
2020/04/25 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
python中如何使用虚拟环境
2020/10/14 Python
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
玩具反斗城葡萄牙官方商城:Toys"R"Us葡萄牙
2016/10/21 全球购物
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
简历中求职的个人自我评价
2013/12/03 职场文书
党员活动日总结
2014/05/05 职场文书
抗震救灾标语
2014/06/26 职场文书
干部年终考核评语
2015/01/04 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
入团申请书格式
2019/06/20 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
Python实现socket库网络通信套接字
2021/06/04 Python
logback如何自定义日志存储
2021/08/30 Java/Android