我的模型M
有一个字段num=models.IntegerField()
我有一个名为F
的模型形式M
我想确保num永远不会消极。
如果我在表单类F
中进行验证,那么我可以执行clean_num()
:
如果为负,则抛出ValidationError('Num can never be negative')
。
此ValidationError
将自动重新显示给用户
将他重定向回到他提交和显示的表格
num
字段顶部的'Num永远不会消极'消息。
这一切都是由django在我扔掉后自动完成的
来自ValidationError
方法的clean_fieldname
。
我希望能够做到这一切,但在模型类中。
F
是从模型类ModelForm
创建的M
。 M
定义了这一点
字段num
永远不会消极。
当我在表单上调用is_valid()
时,我想要在模型中定义的函数
检查引用此模型的任何ModelForm
的验证。
我怎样才能做到这一点?
答案 0 :(得分:1)
请参阅Model validation(仅限Django 1.2+)。
答案 1 :(得分:1)
您还可以使用PositiveIntegerField来解决此特定问题。
如果您的验证仅取决于字段值,则可以按照此处所述实现您自己的字段类型:https://docs.djangoproject.com/en/dev/howto/custom-model-fields/
答案 2 :(得分:1)
感谢所有发布回答的人。但如果你有兴趣,我发现了我所问的问题:
您只需为模型定义一次合适的验证器即可。使用此模型的所有表单都将ValidationError('不能使用此名称')附加到其field_name.errors列表中。
请注意,它们将以运行模型字段验证程序的形式添加到字段中。
无论如何,请检查一下:
Django: how to cleanup form fields and avoid code duplication