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基于回溯法子集树模板解决找零问题示例
Sep 11 Python
python机器学习实战之树回归详解
Dec 20 Python
PyQt5 QTable插入图片并动态更新的实例
Jun 18 Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 Python
django配置app中的静态文件步骤
Mar 27 Python
详解Django配置JWT认证方式
May 09 Python
keras 多gpu并行运行案例
Jun 10 Python
解决tensorflow读取本地MNITS_data失败的原因
Jun 22 Python
PyTorch安装与基本使用详解
Aug 31 Python
Python项目打包成二进制的方法
Dec 30 Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 Python
如何在pycharm中快捷安装pip命令(如pygame)
May 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 - Html Transfer Code
2006/10/09 PHP
php设计模式 Command(命令模式)
2011/06/26 PHP
php eval函数用法 PHP中eval()函数小技巧
2012/10/31 PHP
Java中final关键字详解
2015/08/10 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
Z-Blog中用到的js代码
2007/03/15 Javascript
javascript Select标记中options操作方法集合
2008/10/22 Javascript
javascript设计模式 封装和信息隐藏(上)
2012/07/24 Javascript
JavaScript动态操作表格实例(添加,删除行,列及单元格)
2013/11/25 Javascript
jquery中的on方法使用介绍
2013/12/29 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
js获取checkbox值的方法
2015/01/28 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
2018/03/03 Javascript
微信小程序中换行空格(多个空格)写法详解
2018/07/10 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
微信小程序实现卡片左右滑动效果的示例代码
2019/05/01 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
Vue时间轴 vue-light-timeline的用法说明
2020/10/29 Javascript
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
python的格式化输出(format,%)实例详解
2018/06/01 Python
python中调试或排错的五种方法示例
2019/09/12 Python
pyqt5 QlistView列表显示的实现示例
2020/03/24 Python
高三语文教学反思
2014/01/15 职场文书
幼儿园大班开学寄语
2014/08/02 职场文书
超市创业计划书
2014/09/15 职场文书
奖学金感谢信
2015/01/21 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
用Python爬取英雄联盟的皮肤详细示例
2021/12/06 Python