我有这堂课:
class Object(models.Model):
value=models.IntegerFiled(validators=[MaxValueValidator(100)])
我获取value属性的用户输入,根据用户输入创建对象并将其保存到数据库。问题是用户可以输入例如120用于从模板/ html页面获取输入到视图方法的形式。然后将无效对象保存到数据库中 MaxValueValidator究竟是如何工作的?什么时候做什么?验证者的目的是什么?(我在文档中找不到任何答案)
我确实检查输入表单在视图中是否有效,但这似乎不会阻止通过浏览器中的开发人员工具更改表单中的HTML属性来保存无效对象
答案 0 :(得分:2)
如果您希望自动运行验证程序,则应使用ModelForm
从模型生成表单。根据{{3}}:
请注意,保存模型时不会自动运行验证程序,但如果您使用的是ModelForm,它将在表单中包含的任何字段上运行验证程序。
答案 1 :(得分:1)
您可以制作表单,例如
class ObjectForm(forms.Form):
value = forms.IntegerField(validators=[MaxValueValidator(100)])
然后根据用户输入验证表单
if ObjectForm(request.POST).is_valid():
# save model object here
希望这有帮助。