我正在尝试检查表单上的“图片”字段,看看它是否有效。在我看来,我有以下代码:
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中更改表单值。
答案 0 :(得分:0)
你可以尝试解析你从表单中获得的验证错误中的错误,这些错误会导致它到达" else"使用Form.errors.as_data()
分支。
这将返回一个字典,其中字段为键,错误为值。您可以遍历它以查看是否有任何验证错误源自"图像"字段。