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原始套接字编程示例分享
Feb 21 Python
python新手经常遇到的17个错误分析
Jul 30 Python
Python计算三角函数之asin()方法的使用
May 15 Python
python中的格式化输出用法总结
Jul 28 Python
Python基于回溯法子集树模板解决数字组合问题实例
Sep 02 Python
python+opencv识别图片中的圆形
Mar 25 Python
python dataframe向下向上填充,fillna和ffill的方法
Nov 28 Python
Python3爬虫之自动查询天气并实现语音播报
Feb 21 Python
详解mac python+selenium+Chrome 简单案例
Nov 08 Python
Pytorch中Tensor与各种图像格式的相互转化详解
Dec 26 Python
pycharm新建Vue项目的方法步骤(图文)
Mar 04 Python
用Python实现职工信息管理系统
Dec 30 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中filter函数验证、过滤用户输入的数据
2014/01/13 PHP
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
CodeIgniter钩子用法实例详解
2016/01/20 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
PHP autoload使用方法及步骤详解
2020/09/05 PHP
Save a File Using a File Save Dialog Box
2007/06/18 Javascript
jquery.AutoComplete.js中文修正版(支持firefox)
2010/04/09 Javascript
理解JSON:3分钟课程
2011/10/28 Javascript
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
一不小心就做错的JS闭包面试题
2015/11/25 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
2016/03/16 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
2019/11/25 Javascript
前端深入理解Typescript泛型概念
2020/03/09 Javascript
Vue 样式切换及三元判断样式关联操作
2020/08/09 Javascript
如何HttpServletRequest文件对象并储存
2020/08/14 Javascript
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python查找目录下指定扩展名的文件实例
2015/04/01 Python
python3实现ftp服务功能(客户端)
2017/03/24 Python
单利模式及python实现方式详解
2018/03/20 Python
Python实现查看系统启动项功能示例
2018/05/10 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
一道SQL面试题
2012/12/31 面试题
应届毕业生自我鉴定范文
2013/12/27 职场文书
房地产广告策划方案
2014/05/15 职场文书
英文慰问信
2015/02/14 职场文书
信息简报范文
2015/07/21 职场文书
《秋天的雨》教学反思
2016/02/19 职场文书
background-position百分比原理详解
2021/05/08 HTML / CSS
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python
介绍一下28个JS常用数组方法
2022/05/06 Javascript