假设我在img1a
中有一个简单的模型,可以通过Django Admin进行编辑:
models.py
问题:虽然上面的代码在确保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
的假设方面做得很好,但它也打破了Django提供开箱即用的其他基本验证。例如,如果我在Django admin中为这些字段输入一些非数字数据,我会收到跨越多个屏幕的调试消息:
如果我从lt
的定义中删除了覆盖的clean(self)
方法,则此基本验证将再次开始正常运行:
但是,当然,现在我可以输入Range
,Range
大于gt
。
我真的不知道我做错了什么,因为我只是按照https://docs.djangoproject.com/en/1.9/ref/models/instances/#validating-objects
按照Django文档进行操作我的错误在哪里?如何正确地为我的表单提供验证?
答案 0 :(得分:4)
您可以先运行父clean
方法:
class Range(models.Model):
gt = models.IntegerField('Greater than')
lt = models.IntegerField('Lesser than')
def clean(self):
super(Range, self).clean()
if self.gt >= self.lt:
raise ValidationError('Incorrect range')