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 str与repr的区别
Mar 23 Python
Python和C/C++交互的几种方法总结
May 11 Python
Pandas统计重复的列里面的值方法
Jan 30 Python
python匿名函数用法实例分析
Aug 03 Python
Python scrapy增量爬取实例及实现过程解析
Dec 24 Python
代码总结Python2 和 Python3 字符串的区别
Jan 28 Python
django修改models重建数据库的操作
Mar 31 Python
python数据类型强制转换实例详解
Jun 22 Python
浅谈Python 命令行参数argparse写入图片路径操作
Jul 12 Python
Python文件的操作示例的详细讲解
Apr 08 Python
发工资啦!教你用Python实现邮箱自动群发工资条
May 10 Python
Python制作春联的示例代码
Jan 22 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
SONY ICF-SW55的电路分析
2021/03/02 无线电
?生?D片??C字串
2006/12/06 PHP
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
php操作csv文件代码实例汇总
2014/09/22 PHP
php实现微信支付之退款功能
2018/05/30 PHP
显示js对象所有属性和方法的函数
2009/10/16 Javascript
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
jQuery ul标签下拉菜单演示代码
2010/12/11 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
JavaScript合并两个数组并去除重复项的方法
2015/06/13 Javascript
node.js实现爬虫教程
2020/08/25 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
2016/05/10 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
2018/10/10 Javascript
使用微信SDK自定义分享的方法
2019/07/03 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
在python的WEB框架Flask中使用多个配置文件的解决方法
2014/04/18 Python
Python字符编码判断方法分析
2016/07/01 Python
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
新加坡航空官方网站:Singapore Airlines
2016/10/13 全球购物
GUESS西班牙官方网上商城:美国服饰品牌
2017/03/15 全球购物
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
Hurley官方网站:扎根于海滩生活方式的全球青年文化品牌
2020/05/18 全球购物
如何用Java判断一个文件或目录是否存在
2012/11/19 面试题
工程力学硕士生的自我评价范文
2013/11/16 职场文书
网站开发实习生的自我评价
2013/12/11 职场文书
一般纳税人申请报告
2015/05/18 职场文书
李强感恩观后感
2015/06/17 职场文书
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android