python - 带有 IntegrityError 的 Django CheckConstraint
问题描述
我想在我的 Django 模型中添加一个约束。我认为CheckConstraint
当输入不符合约束时,该方法将有助于捕获错误。但是,当我使用无效输入(例如百分比 = 101)保存模型时,会显示带有 IntegrityError 的错误页面。这里有人知道如何正确使用此方法来验证输入吗?
class Meta:
constraints = [
models.CheckConstraint(
check=Q(percentage__gte=1)
& Q(percentage__lte=100),
name="Please enter a valid percentage",
)
]
解决方案:我最终使用它来解决我的问题
def clean_fields(self, exclude=None):
super().clean_fields(exclude=exclude)
if self.percentage and (
self.percentage < 0 or self.percentage > 100
):
解决方案
(constraints
仅)在数据库端强制执行,因此在IntegrityError
不满足给定条件时会导致 s 。
为了引发正确的验证错误,您将验证器添加到模型字段,例如:
from django.core import validators
class MyModel(models.Model):
percentage = models.IntegerField(validators=[
validators.MinValueValidator(1),
validators.MaxValueValidator(100)
)]
# …
推荐阅读
- python - keras和tensorflow lite模型的预测差异
- c# - SQL 如何替换一个值
- python - 使用 python 和请求,如何进行正确的 POST 调用以及在哪里找到标头?
- android - FirebaseAppDistribution:appDistributionUpload gradle 命令中缺少应用程序 ID
- mysql - 跨列和行计算值的实例
- javascript - 使用 redux 钩子时使用 redux 操作的最佳选择是什么?
- sql - Impala 2.11:AnalysisException:选择列表中不支持子查询
- swift - 在 SwiftUI 中获取当前的经纬度
- c++ - 是否可以禁止一个类被动态转换为?
- git - Git - 将发布分支合并到主分支