gaa*_*kam 1 django validation django-models django-admin
假设我有一个简单的模型,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')
Run Code Online (Sandbox Code Playgroud)
问题:尽管以上代码在确保gt小于的假设方面做得很好lt,但是它也破坏了Django提供的其他基本验证。例如,如果我在Django admin中为这些字段输入了一些非数字数据,则会看到跨越多个屏幕的调试消息:
如果我clean(self)从的定义中删除了覆盖的方法Range,则此基本验证将再次开始正常工作:
但当然,现在我可以进入Range以s gt大于lt。
我真的不知道我在做什么错,因为我只是按照https://docs.djangoproject.com/zh-CN/1.9/ref/models/instances/#validating-objects遵循Django文档
我的错误在哪里?如何正确地为我的表格提供验证?
您可以先运行父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')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1395 次 |
| 最近记录: |