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 numpy实现二维数组和一维数组拼接的方法
Jun 05 Python
python pandas读取csv后,获取列标签的方法
Nov 12 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
Dec 07 Python
Python实现获取系统临时目录及临时文件的方法示例
Jun 26 Python
python实现知乎高颜值图片爬取
Aug 12 Python
python入门之井字棋小游戏
Mar 05 Python
Python使用sqlite3模块内置数据库
May 07 Python
如何理解Python中的变量
Jun 01 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
Jun 14 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
Oct 04 Python
python 30行代码实现蚂蚁森林自动偷能量
Feb 08 Python
python urllib和urllib3知识点总结
Feb 08 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 替换模板变量实现步骤
2009/08/24 PHP
PHP面向对象学习笔记之一 基础概念
2012/10/06 PHP
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
php+xml编程之xpath的应用实例
2015/01/24 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
2016/05/19 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
获取网站跟路径的javascript代码(站点及虚拟目录)
2009/10/20 Javascript
javscript对象原型的一些看法
2010/09/19 Javascript
基于jquery的横向滚动条(滑动条)
2011/02/24 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
2015/11/06 Javascript
一不小心就做错的JS闭包面试题
2015/11/25 Javascript
详解vue.js的devtools安装
2017/05/26 Javascript
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
JQuery获得内容和属性方法解析
2020/05/30 jQuery
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
python实现端口转发器的方法
2015/03/13 Python
Python实现对象转换为xml的方法示例
2017/06/08 Python
Python使用装饰器模拟用户登陆验证功能示例
2018/08/24 Python
利用python实现在微信群刷屏的方法
2019/02/21 Python
python实现远程控制电脑
2019/05/23 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
python处理大日志文件
2019/07/23 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
巴西网上药房:onofre
2016/11/21 全球购物
给护士表扬信
2014/01/19 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang