Django模型中字段属性choice使用说明
作者:lzw2016 发布时间:2022-06-23 16:28:20
标签:Django,字段属性,choice
今天设计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()
来源:https://blog.csdn.net/lzw2016/article/details/81546311
0
投稿
猜你喜欢
- 秉承MVC架构的思想,CI中的所有控制器都需要经过单点入口文件index.php(默认)来加载调用。也就是说,在默认情况下,所有CI开发项目
- 这几天要折腾mysql服务器,所以在网上搜罗了一些维护策略,然后自己总结实验,下面是我的总结经验和别人的一些建议。日志类型:MySQL有几个
- 一 前言知识追寻者又要放大招了,学完这篇openpyxl第三方库,读者将会懂得如何灵活的读取excel数据,如何创建excel工作表;更新工
- 需求:该接口,含两个参数,一个是file,一个是paperName。其中file为上传的文件。content-type为form-data。
- 本文介绍了linux下如何备份与恢复mysql数据库。数据库备份是非常重要的。如果定期做好备份,这样就可以在发生系统崩溃时恢复数据到最后一次
- sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始,以下两个例子说明:1、使用sys.
- 前言场景,顾名思义,就是一个情景,一种场面。在yii2中也有场景,这个场景跟你所理解的场景含义差不多。和用户有交互的系统必不可少的功能包括收
- 一.相关说明:1、openpyxl(可读写excel表)专门处理Excel2007及以上版本产生的xlsx文件;2007一下的版本为xls结
- 列表和元组,都是一个可以放置任何数据类型的有序集合。 列表的特性动态的(mutable):长度大小不固定,可以随意地增加、删减或者改变元素。
- 一、需求介绍该需求主要是分析彩票的历史数据,彩票的名称为:1、极速飞艇链接:https://www.dsn665.com/view/jisu
- 以国内最流行ASP为例,我不知道有多少人会在写代码时想到“容错”这个概念,实际上当我遇到这种事时,也是不了了之。为什么呢,想想最初的意思是认
- 一、系统资源使用限制的必要性探讨对于一个脚本,最基础的限制是要限制单进程实例以保证了不会存在多个进程实例、在运行程序主体逻辑前检测系统资源剩
- 前言本文主要给大家介绍了关于python计算时间差(返回天数)的相关资料,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧方法
- 1.我们首先需要创建一个表CREATE TABLE IF NOT EXISTS `tp_image` ( `id` int(11
- MySQL Community Server 8.0.29安装教程,供大家参考,具体内容如下一、简要说明仅安装MySQL服务器步骤二、前期准
- 程序开发一定要有开发工具,网上找了很多关于Python的开发工具,大神们在用记事本和VIM,小白都用PyCharm,我是属于小白一类的当然也
- 日期时间转字符串Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
- 目录搭建Vuex环境总结搭建Vuex环境在src目录下创建一个文件夹store,在store文件夹内创建一个index.js文件index.
- 1、创建表1.1、创建表基本语法CREATE TABLE tablename (column_name_1 column_type_1 co
- 1 前言前面文章Python爬虫获取基金列表、Python爬虫获取基金基本信息我们已经介绍了怎么获取基金列表以及怎么获取基金基本信息,本文我