好的,尝试在Django中向ModelForm添加一个干净的方法。我正在添加一个简单的加注语句,只是为了看它是否有效,而不是我的信息,我得到“未识别的错误。请通知......”
这是我的(简单)测试:
class ConfigurationForm(forms.ModelForm):
...
def clean(self):
cleaned_data = self.cleaned_data
typeid = cleaned_data.get("typeid")
value = cleaned_data.get("value")
if value and typeid:
raise forms.ValidationError("this is the error")
我甚至无法在django代码库中的任何地方找到对“Unidentified Errors”的引用。在此先感谢您的帮助。
答案 0 :(得分:0)
您的clean方法是否返回cleaning_data?如果你看一下这里的文档:
你会注意到你必须确保返回self.cleaned_data。此外,不要提出验证错误;而是从数据中删除无效字段(再次,因为你必须返回它)
所以:
def clean(self):
typeid = cleaned_data.get("typeid", False)
value = cleaned_data.get("value", False)
if value and typeid:
self._errors["typeid"] = self.error_class(["Some error has happened"])
del(self.cleaned_data['typeid'])
return self.cleaned_data
答案 1 :(得分:0)
我强烈使用清洁模型方法。
您应该在NON_FIELD_ERRORS上搜索错误:
在模板上:
{% if form.non_field_errors %}
<ul>
{% for error in form.non_field_errors %}
<li> {{error}} </li>
{% endfor %}
</ul>
{% endif %}
代码:
form._errors.[NON_FIELD_ERRORS]
Here you can learn about how to move business rules from forms to model