Django中choice的使用
来自CloudWiki
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。
示例:
from django.db import models class Person(models.Model): SHIRT_SIZES = ( ('S', 'Small'), ('M', 'Medium'), ('L', 'Large'), ) name = models.CharField(max_length=60) shirt_size = models.CharField(max_length=1, choices=SHIRT_SIZES) // 和SHIRT_SIZES元组的第一个元素的类型一致
使用方法:
>>> p = Person(name="Fred Flintstone", shirt_size="L") >>> p.save() >>> p.shirt_size 'L' >>> p.get_shirt_size_display() 'Large'
注意如下
STATUS_CHOICE = ( (1, '处理中'), (2, '处理完成'), (3, '结束'), ) status = models.IntegerField(choices=STATUS_CHOICE) // 和STATUS_CHOICE元组的第一个元素的类型一致
参考文档:https://www.cnblogs.com/robinunix/articles/10904437.html