今天設計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) // 和SHIRT_SIZES元組的第一個元素的類型一致
