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 相关文章推荐
Python3基础之输入和输出实例分析
Aug 18 Python
浅谈django中的认证与登录
Oct 31 Python
Python简单的制作图片验证码实例
May 31 Python
python 自定义异常和异常捕捉的方法
Oct 18 Python
python简单区块链模拟详解
Jul 03 Python
Python安装selenium包详细过程
Jul 23 Python
Python基于class()实现面向对象原理详解
Mar 26 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
Apr 12 Python
python实现一个简单RPC框架的示例
Oct 28 Python
pandas apply使用多列计算生成新的列实现示例
Feb 24 Python
pytorch 中nn.Dropout的使用说明
May 20 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 04 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函数
2010/01/11 PHP
PHP setTime 设置当前时间的代码
2012/08/27 PHP
PHP输出两个数字中间有多少个回文数的方法
2015/03/23 PHP
JSON 入门指南 想了解json的朋友可以看下
2009/08/26 Javascript
javascript event 事件解析
2011/01/31 Javascript
jQuery操作 input type=checkbox的实现代码
2012/06/14 Javascript
JavaScript 异常处理 详解
2015/02/06 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
2015/06/22 Javascript
JavaScript编程的单例设计模讲解
2015/11/10 Javascript
使用jQuery+EasyUI实现CheckBoxTree的级联选中特效
2015/12/06 Javascript
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
2016/03/24 Javascript
javascript实现固定侧边栏
2021/02/09 Javascript
Python字符遍历的艺术
2008/09/06 Python
python登陆asp网站页面的实现代码
2015/01/14 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
python中virtualenvwrapper安装与使用
2018/05/20 Python
python操作mysql代码总结
2018/06/01 Python
Python WEB应用部署的实现方法
2019/01/02 Python
django项目登录中使用图片验证码的实现方法
2019/08/15 Python
Python实现Restful API的例子
2019/08/31 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
Python插件机制实现详解
2020/05/04 Python
美国最大的团购网站:Groupon
2016/07/23 全球购物
寻找完美的房车租赁:RVShare
2019/02/23 全球购物
管理科学大学生求职信
2013/11/13 职场文书
物业管理专业个人的自我评价
2013/11/19 职场文书
酒店办公室文员岗位职责
2013/12/18 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
销售人员管理制度
2015/08/06 职场文书
2016年五一劳动节专题校园广播稿
2015/12/17 职场文书
2016年艾滋病宣传活动总结
2016/04/01 职场文书
vue中三级导航的菜单权限控制
2021/03/31 Vue.js
Python机器学习之基于Pytorch实现猫狗分类
2021/06/08 Python
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python
Python中request的基本使用解决乱码问题
2022/04/12 Python