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字符串处理实例详解
May 18 Python
python中subprocess批量执行linux命令
Apr 27 Python
python numpy格式化打印的实例
May 14 Python
Python面向对象实现一个对象调用另一个对象操作示例
Apr 08 Python
OpenCV图像颜色反转算法详解
May 13 Python
详解Python并发编程之从性能角度来初探并发编程
Aug 23 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
django之从html页面表单获取输入的数据实例
Mar 16 Python
python 6.7 编写printTable()函数表格打印(完整代码)
Mar 25 Python
Django import export实现数据库导入导出方式
Apr 03 Python
Jupyter Notebook远程登录及密码设置操作
Apr 10 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
Jul 23 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
抓取YAHOO股票报价的类
2009/05/15 PHP
php随机显示图片的简单示例
2014/02/15 PHP
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
简单实现php上传文件功能
2017/09/21 PHP
Laravel框架在本地虚拟机快速安装的方法详解
2018/06/11 PHP
javascript 动态table添加colspan\rowspan 参数的方法
2009/07/25 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
javascript深拷贝(deepClone)详解
2016/08/24 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
2016/10/10 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
2017/10/31 Javascript
微信小程序网络封装(简单高效)
2018/08/06 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
2020/12/10 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
Python存取XML的常见方法实例分析
2017/03/21 Python
python 文件操作删除某行的实例
2017/09/04 Python
Python统计单词出现的次数
2018/04/04 Python
Python3中urlencode和urldecode的用法详解
2019/07/23 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
Python3 合并二叉树的实现
2019/09/30 Python
如何基于Python Matplotlib实现网格动画
2020/07/20 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
美国眼镜网站:LensCrafters
2020/01/19 全球购物
俄罗斯建筑和装饰材料在线商店:Stroilandia
2020/07/25 全球购物
抽象方法、抽象类怎样声明
2014/10/25 面试题
董事长岗位职责
2013/11/30 职场文书
幼儿园六一儿童节活动方案
2014/08/26 职场文书
行政工作试用期自我评价
2014/09/14 职场文书
上课睡觉检讨书300字
2014/11/18 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
春节晚会开场白
2015/05/29 职场文书
让世界充满爱观后感
2015/06/10 职场文书
表扬信范文
2019/04/22 职场文书
python识别围棋定位棋盘位置
2021/07/26 Python