我在使用Django内联表单集创建时遇到了一个奇怪的错误。
Django报告了formset错误,所以它没有完成创建。
我也测试了is_valid
并返回true。有什么问题?
但如果我检查它们,那么错误字典中就没有任何内容:
1
{{formset.errors}}
[{}, {}, {}, {}, {}]
2
{% if formset.errors %}
{% for error in formset.errors %}
error {{ error }}
{% endfor %}
{% endif %}
{}
我想我理解这个问题:
{% if formset.errors %} even if I have [{}, {}, {}, {}, {}] will pass.
如果我使用{% if not formset.errors %}
,当我遇到真正的错误时也会阻止。
检查列表是否为空不起作用,因为它不是空的,它有空字典。
我可以在表单列表中使用一个循环来检查字典,但是为每个字段或表单/表单集执行此操作我认为这不是一个好的选择。
答案 0 :(得分:3)
首先,检查formset是否已绑定。
formset.is_bound
如果您还没有将表单集绑定到任何数据,那么它就不会有任何错误,但它永远不会有效。
其次,请确保您正在调用is_valid
方法
formset.is_valid()
最后,请注意formset.errors
返回包含每个表单错误的字典列表。还有formset.non_form_errors()
,它返回不属于特定表单的错误。