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 多线程应用介绍
Dec 19 Python
Python深入学习之闭包
Aug 31 Python
用Python生成器实现微线程编程的教程
Apr 13 Python
在Linux系统上安装Python的Scrapy框架的教程
Jun 11 Python
详解Python中的变量及其命名和打印
Mar 11 Python
Python实现的多线程http压力测试代码
Feb 08 Python
Python装饰器用法示例小结
Feb 11 Python
Python基于opencv的图像压缩算法实例分析
May 03 Python
使用python3实现操作串口详解
Jan 01 Python
python 列表、字典和集合的添加和删除操作
Dec 16 Python
python脚本框架webpy的url映射详解
Nov 20 Python
分享Python异步爬取知乎热榜
Apr 12 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中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
PHP判断远程url是否有效的几种方法小结
2011/10/08 PHP
详解PHP导入导出CSV文件
2014/11/03 PHP
php使用cookie实现记住用户名和密码实现代码
2015/04/27 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
js删除所有的cookie的代码
2010/11/25 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
javascript图片相似度算法实现 js实现直方图和向量算法
2014/01/14 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
jQuery编写设置和获取颜色的插件
2017/01/09 Javascript
JavaScript中数组Array.sort()排序方法详解
2017/03/01 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
2017/04/07 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
vue表单自定义校验规则介绍
2018/08/28 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
微信小程序使用gitee进行版本管理
2018/09/20 Javascript
jquery多级树形下拉菜单的实例代码
2019/07/09 jQuery
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
javascript中闭包closure的深入讲解
2021/03/03 Javascript
python与sqlite3实现解密chrome cookie实例代码
2018/01/20 Python
PyQt5实现拖放功能
2018/04/25 Python
python3实现逐字输出的方法
2019/01/23 Python
Python如何实现强制数据类型转换
2019/11/22 Python
Python:slice与indices的用法
2019/11/25 Python
PyTorch中的Variable变量详解
2020/01/07 Python
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
一些关于MySql加速和优化的面试题
2014/01/30 面试题
医学检验专业大学生求职信
2013/11/18 职场文书
环境科学专业个人求职信
2013/12/15 职场文书
中小学生学籍证明
2014/10/25 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
HTML+CSS+JS实现图片的瀑布流布局的示例代码
2021/04/22 HTML / CSS
go语言中http超时引发的事故解决
2021/06/02 Golang