Django在模型表中添加手动校验的方式

news/2024/12/23 14:22:18/文章来源:https://www.cnblogs.com/wellplayed/p/18623894

下面的示例主要运用于代码层面的去重处理,不在数据库层面增加唯一键

# 导入依赖
from django.db import models
from django.utils.translation import gettext_lazy as _
from rest_framework.exceptions import APIException
from django.contrib.auth import get_user_modelUser = get_user_model()# 以书名为例
class Book(models.Model):author = models.ForeignKey(User,on_delete=models.CASCADE,related_name='books',verbose_name=_('作者'))name = models.CharField(null=True, blank=True, max_length=255, verbose_name=_('书名'))public_time = models.DateField(null=True, blank=True, verbose_name=_('发行时间'))is_delete = models.BooleanField(default=False, verbose_name=_('是否删除'))def __str__(self):return f'{self.name} - {self.author.name} - {self.public_time}'def clean(self):if not self.is_delete:# 检查是否已有相同的书名、作者 且 is_delete=False 的记录if VersionReviewPlan.objects.filter(author=self.author,name=self.name,public_time=self.public_time,is_delete=False).exclude(pk=self.pk).exists():raise APIException('请检查是否存在相同的书名')def save(self, *args, **kwargs):self.clean()super().save(*args, **kwargs)class Meta:verbose_name = _('书名')verbose_name_plural = _('书名')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/857451.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解锁宠物用品行业的市场密码:看板软件如何助力精准用户调研?

看板软件可以通过数据可视化与分析、供应链优化、售后管理与服务提升以及品牌建设与用户互动等方式,为宠物用品行业解决用户调研中的痛点问题。然而,需要注意的是,看板软件只是解决方案的一部分,企业还需要结合实际情况和市场需求进行综合考虑和实施。宠物用品行业用户调研…

惊!冬至物流大忙,哪类办公软件能增强团队应急能力?

一、前言 冬至期间,物流行业面临着巨大的挑战与机遇。电商平台的促销活动让订单如潮水般涌来,物流 J 人团队需要高效协作,确保每一个包裹都能准确无误且迅速地送达客户手中。在这个关键时期,合适的可视化团队协作办公软件成为了提升工作效率与个人学习效率的得力助手。本文…

触摸芯片之滑条滚轮方案

完美解决了传统用户界面操作复杂和触摸响应异常的问题触摸芯片的常见应用形式:触摸按键模式 触摸滚轮模式 触摸滑条模式触摸按键-触摸开关、控制面板的多按键触摸 触摸滑条/滚轮-触摸调光、调音量、速度、进度、大小家电的状态 智慧家居必备神器——触摸芯片,触摸反应灵敏,无…

DL00358-基于YOLOv8的停车空位检测代码含数据集

YOLOv8(You Only Look Once Version 8)是基于深度学习的目标检测算法,近年来在图像处理领域取得了显著进展,尤其在实时目标检测任务中表现出色。停车空位检测作为计算机视觉应用中的一个重要研究方向,旨在通过智能化系统识别和判断停车场内的空闲车位,为车主提供实时的停…

小迪安全-基础入门-Web应用架构类别源码类别镜像容器建站模版编译封装前后端分离

Web应用&架构类别&源码类别&镜像容器&建站模版&编译封装&前后端分离知识点: 1、基础入门-Web应用-搭建架构上的技术要点 2、基础入门-Web应用-源码类别上的技术要点 一、演示案例-架构类别-模版&分离&集成&容器&镜像 1、套用模版型 c…

流量分析基础篇

1.流量分析是什么?  网络流量分析是指捕捉网络中流动的数据包,并通过查看包内部数据以及进行相关的协议、流量分析、统计等来发现网络运行过程中出现的问题。2.常见的流量包协议TCP ; UDP ; HTTP ; HTTPS ; FTP ; SMB 等TCP / UDP传输机制TCP协议传输先向你发送三次握手建立…

.net framework 4.7.2 框架winform项目升级到.net 8.0项目 log4net不起作用的解决办法

问题描述: 在.net framework 4.7.2 框架中的winform项目,引入log4net作为日志组件使用,一切正常,可以正常输出日志。 但项目框架升级到.net 8.0后,log4net的使用就报错,虽然网上有很多关于.net 8.0配置并使用log4net的方法,但有些我尝试没有用,有些代码所在位置看不懂在…

纯js文字洗牌式切换特效插件

ShuffleText是一款纯js文字洗牌式切换特效插件。该插件在鼠标滑过指定的文本时,文字会不停的逐个进行翻转,类似洗牌效果,非常炫酷。在线演示 下载使用方法 在页面中引入shuffle-text.js文件。< script src="path/to/shuffle-text.js"> HTML结构 ShuffleTex…

ABB机器人IO板短路怎么解决

解决ABB机器人IO板短路问题的步骤 - 关闭控制系统电源:首先,关闭ABB机器人的控制系统电源,以确保安全操作。 - 检查线路连接:检查IO板的线路连接是否牢固,有无松动或损坏的迹象。 - 使用万用表测量:使用万用表测量电路的三相是否有短路或接地现象。在测量时,…

聊一聊 C#线程池 的线程动态注入 (上)

一:背景 1. 讲故事 在线程饥饿的场景中,我们首先要了解的就是线程是如何动态注入的?其实现如今的ThreadPool内部的实现逻辑非常复杂,而且随着版本的迭代内部逻辑也在不断的变化,有时候也没必要详细的去了解,只需在稍微宏观的角度去理解一下即可,我准备用三篇来详细的聊一…

IT项目经理力推的2024年10款项目管理工具

在数字化时代,IT项目经理面临着日益复杂的挑战,尤其是在项目管理工具的选择上。为了帮助项目经理在2024年更高效地管理项目,本文将介绍10款备受推崇的管理工具,这些工具不仅功能强大,而且能够适应各种项目管理需求。无论你是初学者还是经验丰富的项目经理,这些工具都能为…