【发布时间】:2018-10-02 06:21:20
【问题描述】:
我正在尝试检查表单上的“图像”字段以查看它是否有效。在我看来,我有以下代码:
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)时,打印语句有效,但此时似乎无法在代码中更改图像字段。每当我尝试分别更改模型实例上的值或表单值时,我都会收到一条错误消息,指出“无法更改 UserProfile,因为数据未验证”或“此 QueryDict 实例是不可变的”。
如果表单未通过验证,似乎只有在 forms.py 中才能更改表单值。
【问题讨论】:
-
此答案并未说明如何确定单个字段是否存在错误。这仅说明如何为字段构建自定义验证。我正在寻找确定 django 的内置逻辑或我的自定义验证器是否在此字段上引发了错误。
标签: django django-forms