检查特定字段上的is_valid()

时间:2018-04-21 20:59:48

标签: django django-forms

我正在尝试检查表单上的“图片”字段,看看它是否有效。在我看来,我有以下代码:

if form.is_valid():
   #some stuff

else:
   errors = form.errors.as_data()
   for error in errors:
      if error == 'image':
         print('There was an error with the image!')

我有一个自定义验证程序,导致表单无法验证用户尝试上传的图片是否为> 5MB。当我上传图片时> 5MB,我收到以下错误:

'EditUserProfileForm'对象没有属性'image'

这种形式最终在其上有一个“图像”字段。它是一个模型形式,模型也有一个“图像”字段。如果照片小于5MB,用户可以成功上传照片,因此它不会破坏任何其他内容。

编辑:我已经更新了else语句。当存在图像错误(即它超过5mb)时,print语句有效,但是在代码中此时似乎无法更改图像字段。每当我尝试分别更改模型实例上的值或表单值时,我收到一条错误消息,指出“因为数据未验证而无法更改UserProfile”或“此QueryDict实例是不可变的”。

如果表单未验证,则仅在forms.py中更改表单值。

1 个答案:

答案 0 :(得分:0)

你可以尝试解析你从表单中获得的验证错误中的错误,这些错误会导致它到达" else"使用Form.errors.as_data()分支。

这将返回一个字典,其中字段为键,错误为值。您可以遍历它以查看是否有任何验证错误源自"图像"字段。