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中删除文件的程序代码
Mar 13 Python
wxPython事件驱动实例详解
Sep 28 Python
python获取指定目录下所有文件名列表的方法
May 20 Python
Python使用tablib生成excel文件的简单实现方法
Mar 16 Python
Python中is与==判断的区别
Mar 28 Python
Python 实现一行输入多个值的方法
Apr 21 Python
python爬虫获取小区经纬度以及结构化地址
Dec 30 Python
Python创建字典的八种方式
Feb 27 Python
python中的colorlog库使用详解
Jul 05 Python
logging level级别介绍
Feb 21 Python
在pytorch中实现只让指定变量向后传播梯度
Feb 29 Python
python中random.randint和random.randrange的区别详解
Sep 20 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
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
php导入模块文件分享
2015/03/17 PHP
codeigniter发送邮件并打印调试信息的方法
2015/03/21 PHP
laravel框架实现后台登录、退出功能示例
2019/10/31 PHP
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
jquery js 获取时间差、时间格式具体代码
2013/06/05 Javascript
JS将表单导出成EXCEL的实例代码
2013/11/11 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
Javascript中的call()方法介绍
2015/03/15 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
jQuery+ajax简单实现文件上传的方法
2016/06/03 Javascript
通过javascript进行UTF-8编码的实现方法
2016/06/27 Javascript
Angularjs 实现一个幻灯片示例代码
2016/09/08 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
详解ES6系列之私有变量的实现
2018/11/21 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
axios 实现post请求时把对象obj数据转为formdata
2019/10/31 Javascript
[56:18]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
Django模型中字段属性choice使用说明
2020/03/30 Python
基于PyTorch中view的用法说明
2021/03/03 Python
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
医药营销专业个人自荐信
2013/09/29 职场文书
《阳光》教学反思
2014/02/23 职场文书
法律进学校实施方案
2014/03/15 职场文书
项目投资合作意向书
2014/07/29 职场文书
食品安全汇报材料
2014/08/18 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
2014年平安夜寄语
2014/12/08 职场文书
2015年机关后勤工作总结
2015/05/26 职场文书
运动会100米广播稿
2015/08/19 职场文书
golang如何去除多余空白字符(含制表符)
2021/04/25 Golang
Python 语言实现六大查找算法
2021/06/30 Python