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基于select实现的socket服务器
Apr 13 Python
Python中的defaultdict与__missing__()使用介绍
Feb 03 Python
Python用 KNN 进行验证码识别的实现方法
Feb 06 Python
Python装饰器原理与简单用法实例分析
Apr 29 Python
Python常用字符串替换函数strip、replace及sub用法示例
May 21 Python
python环形单链表的约瑟夫问题详解
Sep 27 Python
python3实现用turtle模块画一棵随机樱花树
Nov 21 Python
Python3实现发送邮件和发送短信验证码功能
Jan 07 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
Jan 13 Python
Python xpath表达式如何实现数据处理
Jun 13 Python
树莓派升级python的具体步骤
Jul 05 Python
详解Python自动化之文件自动化处理
Jun 21 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
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
php auth_http类库进行身份效验
2009/03/19 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
2014/04/01 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
javascript工具库代码
2012/03/29 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
解决IE6的PNG透明JS插件使用介绍
2013/04/17 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
AngularJS基础 ng-mousemove 指令简单示例
2016/08/02 Javascript
实例解析jQuery中如何取消后续执行内容
2016/12/01 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
vue 循环加载数据并获取第一条记录的方法
2018/09/26 Javascript
页面内锚点定位及跳转方法总结(推荐)
2019/04/24 Javascript
Vue 页面权限控制和登陆验证功能的实例代码
2019/06/20 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
Python不使用int()函数把字符串转换为数字的方法
2018/07/09 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
django orm模块中的 is_delete用法
2020/05/20 Python
CSS3教程:边框属性border的极致应用
2009/04/02 HTML / CSS
Europcar美国/加拿大:预订汽车或卡车租赁服务
2018/11/13 全球购物
为什么使用接口?
2014/08/13 面试题
银行类自荐信
2014/02/04 职场文书
销售人员求职的自我评价分享
2014/03/15 职场文书
感恩教育活动总结
2014/05/05 职场文书
旷课检讨书500字
2014/10/14 职场文书
2014年法院工作总结
2014/11/24 职场文书
追讨欠款律师函
2015/05/27 职场文书
贷款收入证明格式
2015/06/24 职场文书
车辆管理制度范本
2015/08/05 职场文书
Html5调用企业微信的实现
2021/04/16 HTML / CSS
yolov5返回坐标的方法实例
2022/03/17 Python