Django里有一个Choices类,相关官方文档见此处。

说明

从实现方式来说,这是一个继承方法,继承django.db.models.Choices,实现的效果接近枚举类型(Enumeration types)或者字典。

我使用此种方法的目的是,部分不会变动的,带有选项性质的小规模数据,可以不用放在数据库中实现持久化。(这以设计后,修改就要从代码层次进行变动)

Choices有主要2种用法,我这里主要陈述带有models.Choices多继承的类型。

class Level(models.IntegerChoices, models.Choices):"""安全级别安全级别相关内容{"RECORDS": [{"level_id": "1","description": "基础定义级"},{"level_id": "2","description": "增强控制级"},{"level_id": "3","description": "持续优化级"},{"level_id": "4","description": "量化完善级"}]}Special:name: DTlabel: '数据服务安全'value: 1"""LEVEL_1 = 1, '基础定义级'LEVEL_2 = 2, '增强控制级'LEVEL_3 = 3, '持续优化级'LEVEL_4 = 4, '量化完善级'

使用

在与他人传递数据时,就可以不用传递彼此约定的文字,直接传递id就可以了

如在JSON传递时,传递参数为{“level_id”: "2"}

print(Level(int(level_id)).label)
# "增强控制级"

Django Choices选择类型相关推荐

  1. 5 select 选择的值_表单元素之选择类型

    表单元素的选择类型可以分为三种: 单选 多选 下拉 单选和复选框的属性值可以有两个:disabled(不可操作的) 和 checked. 下拉框的属性值可以是:selected(默认选中) .mult ...

  2. Django创建数据库(Django数据库字段类型)

    创建默认数据库 项目中数据库的配置在 你的项目/settings.py 中 DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3 ...

  3. define定义的是什么类型_为什么Django 3后建议使用Field.choices枚举类型定义choices选项...

    Django 3.0的主要新增功能之一是对模型字段选择的枚举.它是一种定义和约束模型Field.choices的更好方法. 以前在Django模型中通常会通过定义一些"常量"和元组 ...

  4. Django model 字段类型及选项解析(一)

    字段类型选择:AutoField(Field)- int自增列,必须填入参数 primary_key=TrueBigAutoField(AutoField)- bigint自增列,必须填入参数 pri ...

  5. Django 模型 —— 字段类型

    模型字段参考 本文档包含 Field 类的所有 API 参考,包括 字段操作 和 字段类型. 参见 若内置字段未满足需求,你可以试试 django-localflavor (文档),它包含了针对各别国 ...

  6. erp系统的选择类型

    大家都知道,不同领域.不同行业的公司所运用的ERP管理系统类型是不一样的.特别是在不同的软件开发服务商在发展对策不同的状况下,对ERP系统开发的着重点也会有较大的区别.比如有对针对公司某一类管理需求定 ...

  7. Django choices参数

    只要某个字段的可能性是可以列举完全的,那么一般情况下都会采用choices参数 """ class User(models.Model):username = model ...

  8. django数据库字段类型

    字段类型 字段类型指使用Django ORM创建数据库时支持的数据字段类型. 常用字段 (1) AutoField 自增的整型字段,必填参数primary_key=True,则成为数据库的主键,无该字 ...

  9. Django中datetime类型的相关操作(记录一下)

    1.首先,如果从表单POST请求过来的时候,提交了一个日期的数据,其中是带时分秒的,通过代码获取之后是str类型的话,要转成datetime类型,可以使用python自带的datetime库,具体代码 ...

最新文章

  1. .Net使用SignalR实现消息推送功能预研及Demo
  2. 请简述一下线程的sleep()方法和yield()方法的区别?
  3. Boost:基于Boost的一个微小的actor框架
  4. C# 如何生成一个时间戳
  5. IOS学习笔记十八(copy、mutableCopy、NSCopying、NSMutableCopy、深复制、浅复制)
  6. windows.h有哪些函数
  7. 【渝粤教育】电大中专中医基础知识 (2)作业 题库
  8. expected function body after function declarator
  9. 程序包android.support.annotation不存在_efcore技巧贴也许有你不知道的使用技巧
  10. [转] 寻找第k大的数
  11. mysql协议分析1,MySQL协议分析(1)
  12. 视频去模糊论文阅读-Cascaded Deep Video Deblurring Using Temporal Sharpness Prior
  13. access查找楼号为01_2015年计算机二级考试Access每日一练(9月19日)
  14. 获取微信小程序二维码后返回一堆乱码
  15. 洛谷刷题记录(python)【入门6】函数与结构体
  16. 少吃盐,一定要少吃盐!
  17. [Linux] emacs简介
  18. android 来电显示号码,android监控来电显示
  19. [创新实践] SLAM简介
  20. PDF文件可以修改吗?来看看这几种方法

热门文章

  1. 一个清华大学生几天猎头生活的感想!
  2. 大连装修设计师 大连家装设计师 大连全屋定制设计师 大连独立设计师
  3. 移动带来的创业红利正在消退,或许你应该试试“泛SaaS”新模式
  4. do msgbox loop_西门子数字量DO扩展模块SM1222
  5. 西门子PLC与触摸屏通讯通信干扰的处理方法
  6. 3A信用等级证书的应用有哪些
  7. 小米8A是多少Android系统,国内首家 小米8 SE已率先开始测试Android Q系统
  8. Ubuntu14.04安装wineqq国际版出现无法输入中文的解决方法
  9. win10打开软件显示c盘服务器,教你修复win10系统打开C盘发现一个program Files文件夹的方案...
  10. 关于“7个好习惯”的简单概述