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

这里放一个简单例子:

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

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

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

from django.db import modelsclass Student(models.Model):FRESHMAN = 'FR'SOPHOMORE = 'SO'JUNIOR = 'JR'SENIOR = 'SR'GRADUATE = 'GR'YEAR_IN_SCHOOL_CHOICES = [(FRESHMAN, 'Freshman'),(SOPHOMORE, 'Sophomore'),(JUNIOR, 'Junior'),(SENIOR, 'Senior'),(GRADUATE, 'Graduate'),]year_in_school = models.CharField(max_length=2,choices=YEAR_IN_SCHOOL_CHOICES,default=FRESHMAN,)def is_upperclass(self):return self.year_in_school in {self.JUNIOR, self.SENIOR}

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

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

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

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

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

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

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

django 模型choice基本讲解相关推荐

  1. django模型查询_如何在Django中编写有效的视图,模型和查询

    django模型查询 I like Django. It's a well-considered and intuitive framework with a name I can pronounce ...

  2. Django模型层Meta内部类详解

    Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.以下对此作一总结: abstract      这个属性是定义当前的模型类是不是一个抽象类.所谓抽象类是不会对应 ...

  3. 4Python全栈之路系列之Django模型

    Python全栈之路系列之Django模型 MTV开发模式 把数据存取逻辑.业务逻辑和表现逻辑组合在一起的概念有时被称为软件架构的Model-View-Controller(MVC)模式.在这个模式中 ...

  4. Django模型 Q对象实现复杂查找

    2019独角兽企业重金招聘Python工程师标准>>> 转自 http://1boke.sinaapp.com/blog/3/8/ Django模型 Q对象实现复杂查找,对于初学者来 ...

  5. 【Django】MTV(Django)模型

    MTV(Django)模型 MVC模型 MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视 ...

  6. Web开发-Django模型层

    Django模型层 简述 Django框架处理业务的逻辑一般如下(省略图,源于网络,侵删) 可以看到,Django自带了一套ORM机制,这也是Django框架的核心-"全面",将一 ...

  7. Django模型(三)

    Django模型(三) 文章目录 Django模型(三) 一.模型类关系 1.关系字段类型 2.一对多关系 3.多对多关系 二.关联查询 1.通过对象执行关联查询 2.通过模型类执行关联查询 三.自关 ...

  8. Django模型(二)

    Django模型(二) 文章目录 Django模型(二) 一.字段查询 1.查看mysql数据库日志 二.条件运算符 1.查询等 2.模糊查询 3.空查询 4. 范围查询 5. 比较查询 6).日期查 ...

  9. Django模型(一)

    Django模型(一) 文章目录 Django模型(一) 一.配置Django使用mysql数据库 二.案例 1.定义模型类 2.打开booktest/models.py文件 3.迁移 4.测试数据 ...

  10. 第四章:Django 模型 —— 设计系统表

    1. Django框架提供了完善的模型(Model )层来创建和存储数据,每一个模型对应数据库中的唯一的一张表. 2. Django 模型基础知识: .每一本模型是一个Python类,继承了djang ...

最新文章

  1. C++常见面试题之数据结构和算法
  2. debian7更换gcc版本的二种方法分享
  3. 基于SpringBoot和Vue的分布式爬虫系统(JavaWeb)
  4. 调用函数,计算分段函数的值
  5. python返回变量类型_Python指定函数参数、返回值类型报错是咋了?
  6. 【做题】uoj#370滑稽树上滑稽果——巧妙dp
  7. Redis基础(十二)——缓存读写策略
  8. 【工程项目经验】函数编译可见性
  9. “放管服”改革背景下公安车驾管业务办理情况调研
  10. MATLAB 图像伪彩色处理
  11. Oracle锁表解决方法
  12. 求虐,我还想再拓展一次
  13. nominal,ordinal,interval,ratio variable的区别为:意思不同、用法不同。
  14. lambda中FirstOrDefault和First
  15. KubeSphere 社区双周报 | 2022-08-09
  16. JavaScript 触发浏览器页面全屏,某div区域全屏
  17. 开发者模式下微信公众号按钮助手
  18. 为什么把资金叫做头寸
  19. svg背景_SVG电影背景:安迪的房间,俯瞰酒店
  20. C语言游戏脚本:一个简单的内存脚本!

热门文章

  1. nuc8i7beh安装linux随机重启,指南:nuc8i5beh安装黑苹果的教程,接近完美运行
  2. java中线,使用Voronoi图查找多边形的中线
  3. 你不得不知的网络编程三剑客
  4. JustinMind原型制作工具
  5. android pm 列出权限,Android pm命令
  6. 一文彻底搞懂微服务架构
  7. 浏览器利用框架BeEF测试
  8. 第一天 Java基础入门【悟空教程】
  9. 使用 IDEA 文件统计工具 Statistic
  10. HTTP提交方式之PUT详细介绍及POST和PUT的区别