我想在我的 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
):
最佳答案
约束
(仅)在数据库端强制执行,因此当不满足给定条件时会导致IntegrityError
。
为了引发正确的验证错误,您将验证器添加到模型字段,例如:
from django.core import validators
class MyModel(models.Model):
percentage = models.IntegerField(validators=[
validators.MinValueValidator(1),
validators.MaxValueValidator(100)
)]
# …
关于python - 具有 IntegrityError 的 Django CheckConstraint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68646012/