当前位置:   article > 正文

django 模型choice基本讲解_django choice

django choice

choice的主要使用形式为[(A,B),(C,D),(E,F)]这种形式,对于有一定python了解的同学可能知道python可以采用zip的方式生成。

这里放一个简单例子:

  1. a = ['li', 'zhao', 'dan']
  2. b = ['1', '2', '3']
  3. c = zip(a, b)
  4. print(list(c))
[('li', '1'), ('zhao', '2'), ('dan', '3')]

当然直接用元祖的方式也可以使用choice

当然,还有更进一步的使用:

  1. from django.db import models
  2. class Student(models.Model):
  3. FRESHMAN = 'FR'
  4. SOPHOMORE = 'SO'
  5. JUNIOR = 'JR'
  6. SENIOR = 'SR'
  7. GRADUATE = 'GR'
  8. YEAR_IN_SCHOOL_CHOICES = [
  9. (FRESHMAN, 'Freshman'),
  10. (SOPHOMORE, 'Sophomore'),
  11. (JUNIOR, 'Junior'),
  12. (SENIOR, 'Senior'),
  13. (GRADUATE, 'Graduate'),
  14. ]
  15. year_in_school = models.CharField(
  16. max_length=2,
  17. choices=YEAR_IN_SCHOOL_CHOICES,
  18. default=FRESHMAN,
  19. )
  20. def is_upperclass(self):
  21. return self.year_in_school in {self.JUNIOR, self.SENIOR}

这其中YEAR_IN_SCHOOL_CHOICES中前面一个FRESHMAN表示放在数据库中的值,后面一个则表示显示值,由于FRESHMAN长度问题,我们往往采用enum的形式将键长缩短为几个字符来进行存储。

跟进一步,就和django自己定义的类有关了

  1. class NIHAO(model.Models)
  2. class YearInSchool(models.TextChoices):
  3. FRESHMAN = 'FR', _('Freshman')
  4. SOPHOMORE = 'SO', _('Sophomore')
  5. JUNIOR = 'JR', _('Junior')
  6. SENIOR = 'SR', _('Senior')
  7. GRADUATE = 'GR', _('Graduate')

Textchoices可以写成内置类,将上述内容转换成该代码

而对于整数类,可以采用:

  1. class Card(models.Model):
  2. class Suit(models.IntegerChoices):
  3. DIAMOND = 1
  4. SPADE = 2
  5. HEART = 3
  6. CLUB = 4

通过django官方文档我们可以继续进行后续学习https://docs.djangoproject.com/en/4.0/ref/models/fields/

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/56534
推荐阅读
相关标签
  

闽ICP备14008679号