当前位置: 首页 > news >正文

关于Django 模型字段 `choices`自定义数据类型的枚举——补充

文章目录

    • 1. 处理 `datetime` 类型的 `choices`
    • 2. 处理 `time` 类型的 `choices`
    • 3. 处理 `Decimal` 类型的 `choices`
    • 4. 处理 `UUID` 类型的 `choices`
    • 5. 处理 `float` 类型的 `choices`

Choices 类的基础上扩展,可以将 choices 与特定数据类型(如 datedatetime)结合,适合需要特定类型支持的场景,如日期 date

import datetimeclass MoonLandings(datetime.date, models.Choices):APOLLO_11 = 1969, 7, 20, "Apollo 11 (Eagle)"APOLLO_12 = 1969, 11, 19, "Apollo 12 (Intrepid)"

类似的方式还可以应用于处理其他特定数据类型,例如 datetimetimeDecimalUUID 等。以下是一些常见数据类型的示例:

1. 处理 datetime 类型的 choices

假设我们需要记录一些重要的时间点,可以使用 datetime.datetimemodels.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.timemodels.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

有时我们需要记录固定的金额,可以用 Decimalmodels.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.UUIDmodels.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理论指得是分布式系统发生网络等故障时,不同节点之间无法同步数据&#xf…...

【傻呱呱】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&#xff0c;如果有需要React/Vue3或者其他框架代码的&#xff0c;可以通过国内直连GPT4o进行代码转换&#xff0c;转换正确率99% 前端代码如下(直接拷贝到你的vue代码即可)&#xff1a; <!-- CustomCheckboxList.vue --&g…...

鸿蒙-promptAction.showToast基于PC屏幕底部提示

PC端app缩小&#xff0c;右击出菜单后&#xff0c;点菜单项 菜单关闭&#xff0c;并弹promptAction.showToast提示&#xff0c;但提示是基于PC底部弹提示的&#xff0c;需要的是基于app底部弹提示 原因是UIContext是右击菜单的UIContext&#xff0c;需要拿到菜单下面UI的UICont…...

Vert.x,应用监控 - 全链路跟踪,基于Zipkin

关于Zipkin Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System)&#xff0c;能够收集服务间调用的时序数据&#xff0c;提供调用链路的追踪。Zipkin每一个调用链路通过一个trace id来串联起来&#xff0c;通过trace id&#xff0c;就能够直接定位到这次调…...

Rust常用数据结构教程 序列

文章目录 一、Vec1.Vec与堆栈2.什么时候需要Vec3.get()方法4.与枚举的结合 二、VecDeque1.什么情况适合VecDeque2.VecDeque的方法 三、LinkedList1.什么时候用LinkedList 参考 一、Vec 可变数组(vector)数组存储在heap上,在运行时(runtime)可以增加或减少数组 长度 有人把Ve…...

智慧城市路面垃圾识别系统产品介绍方案

方案介绍 智慧城市中的路面垃圾识别算法通常基于深度学习框架&#xff0c;这些算法因其在速度和精度上的优势而被广泛采用。这些模型能够通过训练识别多种类型的垃圾&#xff0c;包括塑料袋、纸屑、玻璃瓶等。系统通过训练深度学习模型&#xff0c;使其能够识别并定位多种类型…...

网络安全:构建坚固的数字堡垒

网络安全&#xff1a;构建坚固的数字堡垒 在当今数字化时代&#xff0c;网络安全已经成为企业和个人不可忽视的重要议题。随着互联网的普及和信息技术的快速发展&#xff0c;网络攻击、数据泄露和隐私侵犯等问题日益严重&#xff0c;给企业和个人带来了巨大的风险和损失。本文…...

探秘游戏安全:驱动级防护与图标守护的开源宝藏

探秘游戏安全&#xff1a;驱动级防护与图标守护的开源宝藏 【下载地址】驱动保护进程与游戏破图标技术实现代码 驱动保护进程与游戏破图标技术实现代码 项目地址: https://gitcode.com/open-source-toolkit/beb83 随着电子竞技的兴起和游戏产业的繁荣&#xff0c;游戏安…...

NotebookLM电影研究实战手册:3步构建专属电影知识图谱,效率提升300%

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;NotebookLM电影研究辅助 NotebookLM 是 Google 推出的基于 AI 的研究协作者&#xff0c;专为深度阅读、知识整合与批判性思考设计。在电影研究场景中&#xff0c;它能将剧本、影评、学术论文、导演访谈、历史…...

通过curl命令在无SDK环境中测试Taotoken接口连通性

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过curl命令在无SDK环境中测试Taotoken接口连通性 在服务器管理、持续集成流水线或轻量级容器环境中&#xff0c;你可能需要在没有…...

卡梅德生物技术快报|单 B 细胞抗体制备:流程优化、表达系统适配与性能数据

正文单克隆抗体制备是生物医学与兽医领域的核心技术。单 B 细胞抗体制备作为新一代技术&#xff0c;在筛选效率、基因天然性、制备周期上优势显著。本文从研发视角&#xff0c;按提出问题 — 分析问题 — 解决问题 — 效果数据&#xff0c;系统阐述单 B 细胞抗体制备的技术细节…...

【NotebookLM新闻传播研究权威指南】:20年传媒技术专家亲授AI驱动的新闻生产新范式

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;NotebookLM新闻传播研究导论 NotebookLM 是 Google 推出的基于大型语言模型的实验性研究助手&#xff0c;专为信息整合、溯源验证与知识重构设计。其核心能力在于对用户上传的文档&#xff08;PDF、TXT、网页…...

互联网大厂 Java 面试:搞笑程序员与严肃面试官的较量

面试荒唐记&#xff1a;从 Java SE 到微服务的奇妙之旅在某个互联网大厂的面试现场&#xff0c;严肃的面试官和搞笑的程序员燕双非展开了一场针锋相对的较量。从Java SE到微服务&#xff0c;燕双非用他机智的回答打破了沉闷的气氛&#xff0c;然而在复杂问题面前又显得有些捉襟…...

开源写作助手:本地化部署的智能文本分析与AI辅助创作工具

1. 项目概述&#xff1a;一个为写作者量身定制的智能工具箱如果你经常需要写点东西&#xff0c;无论是技术文档、博客文章、工作报告&#xff0c;还是小说草稿&#xff0c;大概率都经历过这样的时刻&#xff1a;对着空白文档发呆&#xff0c;感觉大脑一片空白&#xff1b;或者写…...

python系列【仅供参考】;避开这些坑,你的Python爬虫才能稳定爬取IEEE Xplore(含反爬策略与MongoDB存储实战)

避开这些坑,你的Python爬虫才能稳定爬取IEEE Xplore(含反爬策略与MongoDB存储实战) 避开这些坑,你的Python爬虫才能稳定爬取IEEE Xplore(含反爬策略与MongoDB存储实战)---------------------避开这些坑,你的Python爬虫才能稳定爬取IEEE Xplore(含反爬策略与MongoDB存储…...

15分钟搞定国标视频监控平台部署,wvp-GB28181-pro让安防系统搭建如此简单!

15分钟搞定国标视频监控平台部署&#xff0c;wvp-GB28181-pro让安防系统搭建如此简单&#xff01; 【免费下载链接】wvp-GB28181-pro 基于GB28181-2016、部标808、部标1078标准实现的开箱即用的网络视频平台。自带管理页面&#xff0c;支持NAT穿透&#xff0c;支持海康、大华、…...

利用Taotoken的Token Plan套餐为团队项目节省大模型调用成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 利用Taotoken的Token Plan套餐为团队项目节省大模型调用成本 对于中小型技术团队而言&#xff0c;在项目开发中引入大模型能力已成…...