【发布时间】:2016-08-05 07:42:36
【问题描述】:
假设我在 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 管理中为这些字段输入一些非数字数据,我会看到跨越多个屏幕的调试消息:
如果我从Range 的定义中删除覆盖的clean(self) 方法,这个基本验证再次开始正常工作:
当然,现在我可以输入Ranges,其中gt 大于lt。
我真的不知道我做错了什么,因为我虽然只是按照 https://docs.djangoproject.com/en/1.9/ref/models/instances/#validating-objects 遵循 Django 文档进行操作
我的错误在哪里?如何正确地为我的表单提供验证?
【问题讨论】:
标签: django validation django-models django-admin