关于Django 模型字段 `choices`自定义数据类型的枚举——补充
文章目录
- 1. 处理 `datetime` 类型的 `choices`
- 2. 处理 `time` 类型的 `choices`
- 3. 处理 `Decimal` 类型的 `choices`
- 4. 处理 `UUID` 类型的 `choices`
- 5. 处理 `float` 类型的 `choices`
在
Choices 类的基础上扩展,可以将
choices 与特定数据类型(如
date 或
datetime)结合,适合需要特定类型支持的场景,如日期
date
import datetimeclass MoonLandings(datetime.date, models.Choices):APOLLO_11 = 1969, 7, 20, "Apollo 11 (Eagle)"APOLLO_12 = 1969, 11, 19, "Apollo 12 (Intrepid)"
类似的方式还可以应用于处理其他特定数据类型,例如 datetime、time、Decimal、UUID 等。以下是一些常见数据类型的示例:
1. 处理 datetime 类型的 choices
假设我们需要记录一些重要的时间点,可以使用 datetime.datetime 和 models.Choices 来定义这些选择:
import datetime
from django.db import modelsclass ImportantMoments(datetime.datetime, models.Choices):NEW_YEAR = 2024, 1, 1, 0, 0, 0, "New Year 2024"SUMMER_SOLSTICE = 2024, 6, 21, 12, 0, 0, "Summer Solstice 2024"WINTER_SOLSTICE = 2024, 12, 21, 12, 0, 0, "Winter Solstice 2024"class Event(models.Model):moment = models.DateTimeField(choices=ImportantMoments.choices)
这里的 moment 字段的可选项是特定的 datetime 值,比如“2024 年的新年”等。这样我们可以确保用户只能选择预定义的时间点。
2. 处理 time 类型的 choices
如果需要记录某些特定的时间(比如营业时间、特殊的时刻),可以用 datetime.time 和 models.Choices:
import datetime
from django.db import modelsclass BusinessHours(datetime.time, models.Choices):OPENING = 9, 0, 0, "Opening Time"CLOSING = 18, 0, 0, "Closing Time"LUNCH_BREAK = 12, 0, 0, "Lunch Break"class Store(models.Model):operation_time = models.TimeField(choices=BusinessHours.choices)
在这个例子中,operation_time 字段的可选值只能是 BusinessHours 定义的几个特定时刻,比如开门时间、关门时间和午休时间。
3. 处理 Decimal 类型的 choices
有时我们需要记录固定的金额,可以用 Decimal 和 models.Choices。例如,对于定价的选择,可以使用 Decimal 来精确表示金额。
from decimal import Decimal
from django.db import modelsclass FixedPrices(Decimal, models.Choices):BUDGET = Decimal("9.99"), "Budget Option"STANDARD = Decimal("19.99"), "Standard Option"PREMIUM = Decimal("29.99"), "Premium Option"class Product(models.Model):price = models.DecimalField(max_digits=5, decimal_places=2, choices=FixedPrices.choices)
在这里,price 字段的选项是特定的价格,比如“预算选项”、“标准选项”等,可以确保用户只能选择固定的金额。
4. 处理 UUID 类型的 choices
如果使用 UUID 来标识某些特定的设备或版本,我们可以用 uuid.UUID 和 models.Choices。例如,在记录设备时,指定唯一的 UUID 作为选项:
import uuid
from django.db import modelsclass KnownDevices(uuid.UUID, models.Choices):DEVICE_A = uuid.UUID("123e4567-e89b-12d3-a456-426614174000"), "Device A"DEVICE_B = uuid.UUID("123e4567-e89b-12d3-a456-426614174001"), "Device B"DEVICE_C = uuid.UUID("123e4567-e89b-12d3-a456-426614174002"), "Device C"class Device(models.Model):device_id = models.UUIDField(choices=KnownDevices.choices)
这样可以确保 device_id 字段只能是已知设备的 UUID。
5. 处理 float 类型的 choices
在某些情况下,如果我们需要用浮点数记录物理常量(比如π值的不同精度),可以使用 float 类型。
from django.db import modelsclass PiValues(float, models.Choices):LOW_PRECISION = 3.14, "Low Precision Pi"MEDIUM_PRECISION = 3.14159, "Medium Precision Pi"HIGH_PRECISION = 3.1415926535, "High Precision Pi"class Measurement(models.Model):pi_value = models.FloatField(choices=PiValues.choices)
通过这种方法,pi_value 字段仅限于选择特定精度的 π 值。
相关文章:
关于Django 模型字段 `choices`自定义数据类型的枚举——补充
文章目录 1. 处理 datetime 类型的 choices2. 处理 time 类型的 choices3. 处理 Decimal 类型的 choices4. 处理 UUID 类型的 choices5. 处理 float 类型的 choices 在 Choices 类的基础上扩展,可以将 choices 与特定数据类型(如 date 或 datetime&a…...
CAP理论的延申--BASE理论
上一篇文章我简单介绍了一下什么是CAP理论,本篇文章讲解一下随着技术的演变,CAP理论是如何发展为BASE理论的。 CAP理论回顾 首先我们回顾一下CAP理论,CAP理论指得是分布式系统发生网络等故障时,不同节点之间无法同步数据…...
【傻呱呱】phpMyAdmin怎样给特定用户授权特定数据库权限?
前期准备 phpMyAdmin数据库(MySQL) END...
『VUE』21. 组件注册(详细图文注释)
目录 组件注册局部注册全局注册全局注册示例总结 欢迎关注 『VUE』 专栏,持续更新中 欢迎关注 『VUE』 专栏,持续更新中 组件注册 组件注册有两种方式:全局注册和局部注册。全局注册只需要注册依次,其他组件可以直接调用无需再次像局部注册一…...
如何产看SQL 查询的执行时间
要查看 SQL 查询的执行时间,尤其是毫秒级别,可以使用以下几种方法: 方法 1:使用 SET STATISTICS TIME 查看执行时间 SET STATISTICS TIME 会显示执行时间的详细信息,包括 CPU 时间和总耗时。启用后,SQL S…...
计算机网络——路由器构成
算路由表是分布式去算——你算你的,我算我的 输出队列非先来先传 调度发生在哪里 缓存队列一般是应对——来数据方向的速度过快问题...
架构师之路-学渣到学霸历程-48
实现域名跳转的实验 今天继续还是分享域名跳转的实验;继续整,看看效果 意思就是你本来访问www.liangjiawei.net的网站然后跳转到blog.liangjiawei.net的网站 1、基础的环境部署 安装好nginx(这里最好的就是干净的环境)创建两个…...
HappyChart——一款简单好用的专业绘图软件
HappyChart是一款新出的专业绘图软件,灵感来自于类PS软件,它是以图层的方式进行绘图。相比与Excel图表或其他专业绘图软件,HappyChart界面简洁明了,操作简单,没有复杂的选项,它只调整绘图相关参数即可实时展…...
【Linux】进程信号全攻略(二)
🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一:🔥 再谈信号的捕捉 🦋 关于信号捕捉的细节部分(sigaction函数) 二:🔥 穿插话题 - 操作系统是怎么运…...
redis用法(二)
文章目录 02-redis数据类型篇生产环境下的redis实况图 1.全局命令redis数据存储格式set设置k-v查看当前redis的key的数量危险命令,新手请在于超老师陪同下执行为什么危险?如何正确搜索redis的key 查看库下有多少个key查询redis库信息切换redis库查看key是…...
Python-利用os,tkinter库编写一个伪恶意程序文件(Pro版)
前言:上一期我们简单学习了如何编写一个多次弹窗警告用户的exe伪恶意文件。我们知道了把Python初始文件编译为exe文件后,程序在没有Python环境的情况下也能正常运行。我们上次编写的程序仅仅只是伪造系统正在执行关机命令前的倒计时的假象,实…...
Oracle视频基础1.4.4练习
1.4.4 [dbs] 删干净上次创建的bbk ll rm -f *dbf ll rm -f spfilebbk.ora clear ll创建bbk的pfile,准备对应的目录 ll strings spfilewilson.ora | more strings spfilewilson.ora > initbbk.ora :%s/wilson/bbk :%s/*\.//g :wq ll vi initbbk.ora####### 创…...
GOF的C++软件设计模式的分类和模式名称
“GOF” 指的是 “Gang of Four”,即“四人帮”,他们是指 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides。这四位作者在其著作《Design Patterns: Elements of Reusable Object-Oriented Software》中定义了23种设计模式,这些…...
有向图的完全可达性(有向图搜索全路径的问题) C#DFs
在考察输入输出方面我觉得是道难题了 第一次遇见邻接表的数据结构该怎么声明 卡码网105 在力扣没找见完全相同的题 感觉需要多练习多复习这种类型的题 105. 有向图的完全可达性 题目描述 给定一个有向图,包含 N 个节点,节点编号分别为 1&…...
前端开发实现自定义勾选/自定义样式,可复选,可取消勾选
基于后端返回数组实现多选、复选 以下代码基于vue2,如果有需要React/Vue3或者其他框架代码的,可以通过国内直连GPT4o进行代码转换,转换正确率99% 前端代码如下(直接拷贝到你的vue代码即可): <!-- CustomCheckboxList.vue --&g…...
鸿蒙-promptAction.showToast基于PC屏幕底部提示
PC端app缩小,右击出菜单后,点菜单项 菜单关闭,并弹promptAction.showToast提示,但提示是基于PC底部弹提示的,需要的是基于app底部弹提示 原因是UIContext是右击菜单的UIContext,需要拿到菜单下面UI的UICont…...
Vert.x,应用监控 - 全链路跟踪,基于Zipkin
关于Zipkin Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System),能够收集服务间调用的时序数据,提供调用链路的追踪。Zipkin每一个调用链路通过一个trace id来串联起来,通过trace id,就能够直接定位到这次调…...
Rust常用数据结构教程 序列
文章目录 一、Vec1.Vec与堆栈2.什么时候需要Vec3.get()方法4.与枚举的结合 二、VecDeque1.什么情况适合VecDeque2.VecDeque的方法 三、LinkedList1.什么时候用LinkedList 参考 一、Vec 可变数组(vector)数组存储在heap上,在运行时(runtime)可以增加或减少数组 长度 有人把Ve…...
智慧城市路面垃圾识别系统产品介绍方案
方案介绍 智慧城市中的路面垃圾识别算法通常基于深度学习框架,这些算法因其在速度和精度上的优势而被广泛采用。这些模型能够通过训练识别多种类型的垃圾,包括塑料袋、纸屑、玻璃瓶等。系统通过训练深度学习模型,使其能够识别并定位多种类型…...
网络安全:构建坚固的数字堡垒
网络安全:构建坚固的数字堡垒 在当今数字化时代,网络安全已经成为企业和个人不可忽视的重要议题。随着互联网的普及和信息技术的快速发展,网络攻击、数据泄露和隐私侵犯等问题日益严重,给企业和个人带来了巨大的风险和损失。本文…...
Pixel Epic动态卷轴效果展示:从空白屏幕到完整研报的实时生成录屏
Pixel Epic动态卷轴效果展示:从空白屏幕到完整研报的实时生成录屏 1. 引言:当科研遇上像素冒险 在传统的研究报告撰写过程中,我们常常面对冰冷的界面和机械化的交互体验。Pixel Epic彻底改变了这一现状,将严肃的学术研究变成了一…...
鸣鸣很忙上市后首份年报:营收662亿同比增长 经调整净利27亿
雷递网 雷建平 3月31日湖南鸣鸣很忙商业连锁股份有限公司(简称:“鸣鸣很忙”,股份代号:1768)今日发布截至2025年12月31日的财报。财报显示,鸣鸣很忙2025年营收为661.7亿元,较上年他同期的393.44…...
QueryExcel:解放双手的Excel批量查询神器,告别Ctrl+F的繁琐时代
QueryExcel:解放双手的Excel批量查询神器,告别CtrlF的繁琐时代 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 在日常工作中,你是否也曾被海量Excel文件中的数据查找…...
效率提升:基于快马平台实现openclaw windows部署的自动化与优化
最近在团队里负责优化openclaw在Windows环境的部署流程,发现传统手动部署方式存在不少效率瓶颈。经过在InsCode(快马)平台上的实践,我们实现了一套自动化部署方案,效果提升明显。这里分享几个关键优化点: 全流程一键化部署 过去部…...
像素语言传送门效果实测:Hunyuan-MT-7B对中文网络新词(如‘绝绝子‘)的跨语种意译能力
像素语言传送门效果实测:Hunyuan-MT-7B对中文网络新词(如绝绝子)的跨语种意译能力 1. 测试背景与工具介绍 像素语言跨维传送门是基于腾讯Hunyuan-MT-7B翻译引擎构建的创新翻译工具。与传统翻译软件不同,它将语言转换过程设计成一…...
RePKG:突破动态壁纸资源壁垒的开源工具
RePKG:突破动态壁纸资源壁垒的开源工具 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 当你面对一个包含丰富素材的动态壁纸资源包(PKG文件)却无…...
P1095 守望者的逃离【洛谷算法习题】
P1095 守望者的逃离 网页链接 P1095 守望者的逃离 题目背景 NOIP2007 普及组 T3 题目描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变。 守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上。…...
让ai替你思考架构:描述需求,快马智能生成带rabbitmq的微服务通知系统代码
最近在做一个微服务通知系统,用到了RabbitMQ这个强大的消息队列工具。说实话,消息队列的配置和绑定关系一开始让我有点头疼,好在发现了InsCode(快马)平台的AI辅助功能,整个过程变得轻松多了。下面分享下我的实现思路和经验。 系统…...
片上网络NOC:可生成RTL源代码与UVM验证环境的实用学习资料
片上网络NOC,可生成RTL源代码,生成uvm验证环境,内含有丰富的文档,带有readme文档,有例子工程,操作简单,是学习工作的好资料最近折腾NoC项目的时候挖到一个宝藏工具包,名字先不透露&a…...
新手零基础入门:用快马一键生成交互式python学习jupyter notebook
作为一个刚开始学Python的小白,最近发现用Jupyter Notebook来练习代码特别方便。特别是列表和字典这些基础数据结构,通过交互式单元格可以边学边改,效果比单纯看教程好多了。今天就用InsCode(快马)平台来演示如何快速生成一个适合新手的交互式…...
