gpt4 book ai didi

django - 重写 Django 模型中的 clean 方法会破坏其他验证吗?

转载 作者:行者123 更新时间:2023-12-02 07:20:50 25 4
gpt4 key购买 nike

假设我在 models.py 中有一个简单的模型,旨在通过 Django Admin 进行编辑:

class Range(models.Model):
gt = models.IntegerField('Greater than')
lt = models.IntegerField('Lesser than')

def clean(self):
if self.gt >= self.lt:
raise ValidationError('Incorrect range')

问题:虽然上面的代码在确保 gt 小于 lt 的假设方面做得很好,但它也破坏了 Django 提供的其他基本验证 -开箱即用。例如,如果我在 Django admin 中为这些字段输入一些非数字数据,我会看到跨多个屏幕的调试消息:

enter image description here

如果我从 Range 的定义中删除重写的 clean(self) 方法,此基本验证将再次开始正常工作:

enter image description here

当然,现在我可以输入 Range,其中 gt 大于 lt

我真的不知道我做错了什么,因为我以为我只是遵循 Django 文档,如https://docs.djangoproject.com/en/1.9/ref/models/instances/#validating-objects

我的错误在哪里?如何正确地为我的表单提供验证?

最佳答案

您可以先运行父clean方法:

class Range(models.Model):
gt = models.IntegerField('Greater than')
lt = models.IntegerField('Lesser than')

def clean(self):
super().clean()

if self.gt >= self.lt:
raise ValidationError('Incorrect range')

关于django - 重写 Django 模型中的 clean 方法会破坏其他验证吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36611480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com