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中的type和object
Aug 15 Python
Python后台开发Django会话控制的实现
Apr 15 Python
python切片(获取一个子列表(数组))详解
Aug 09 Python
windows中安装Python3.8.0的实现方法
Nov 19 Python
Python time库基本使用方法分析
Dec 13 Python
Python实现AI换脸功能
Apr 10 Python
Python函数参数定义及传递方式解析
Jun 10 Python
Keras-多输入多输出实例(多任务)
Jun 22 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
Python使用windows设置定时执行脚本
Nov 12 Python
使用Python画了一棵圣诞树的实例代码
Nov 27 Python
Python 流媒体播放器的实现(基于VLC)
Apr 28 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
合作指挥官:孟斯克
2020/03/16 星际争霸
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2013/07/01 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
ThinkPHP模板IF标签用法详解
2014/07/01 PHP
PHP常用的小程序代码段
2015/11/14 PHP
php实现中文转数字
2016/02/18 PHP
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
js加强的经典分页实例
2013/03/15 Javascript
jQuery之选择组件的深入解析
2013/06/19 Javascript
调用DOM对象的focus使文本框获得焦点
2014/02/19 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
基于JavaScript实现的快速排序算法分析
2017/04/14 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
2017/04/21 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
浅谈react.js中实现tab吸顶效果的问题
2017/09/06 Javascript
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
jQuery HTML css()方法与css类实例详解
2020/05/20 jQuery
Vue 解决父组件跳转子路由后当前导航active样式消失问题
2020/07/21 Javascript
Python中的连接符(+、+=)示例详解
2017/01/13 Python
Python中动态创建类实例的方法
2017/03/24 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
PYQT5设置textEdit自动滚屏的方法
2019/06/14 Python
django如何自己创建一个中间件
2019/07/24 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
浅析python内置模块collections
2019/11/15 Python
TensorFlow2.0:张量的合并与分割实例
2020/01/19 Python
社区服务标语
2014/07/01 职场文书
机关干部作风建设剖析材料
2014/10/23 职场文书
煤矿安全保证书
2015/02/27 职场文书
护林员个人总结
2015/03/04 职场文书
放假通知
2015/04/14 职场文书
Python 中的单分派泛函数你真的了解吗
2021/06/22 Python
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python