【发布时间】:2017-08-24 19:06:09
【问题描述】:
在 Django 表单中抛出 ValidationError 异常的适当方法是什么?
似乎有几种不同的互斥方式可以抛出此异常。如果我在表单中有一个自定义的clean() 方法,并且错误不涉及任何特定字段,那么我必须像这样抛出它:
raise ValidationError({NON_FIELD_ERRORS: ["Something's wrong!"]})
但是,如果我在 InlineFormSet 的自定义 clean() 方法中执行此操作,它会破坏 Django 的验证框架并引发错误:
AttributeError: 'ValidationError' object has no attribute 'error_list'
如果我改为将代码更改为:
raise ValidationError("Something's wrong!")
然后它工作得很好,我在我的网页上看到了一个很好的用户友好的红色验证错误。但是,这种语法几乎在其他任何地方都失败了,如果我不使用raise ValidationError({...}) 语法,则会令人困惑地抛出错误'ValidationError' object has no attribute 'error_list'。这是为什么呢?
【问题讨论】: