django InlineFormsets错误报告,其中formset错误列表为空

时间:2018-03-06 10:13:05

标签: django django-forms django-templates

我在使用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 %},当我遇到真正的错误时也会阻止。

检查列表是否为空不起作用,因为它不是空的,它有空字典。

我可以在表单列表中使用一个循环来检查字典,但是为每个字段或表单/表单集执行此操作我认为这不是一个好的选择。

1 个答案:

答案 0 :(得分:3)

首先,检查formset是否已绑定。

formset.is_bound

如果您还没有将表单集绑定到任何数据,那么它就不会有任何错误,但它永远不会有效。

其次,请确保您正在调用is_valid方法

formset.is_valid()

最后,请注意formset.errors返回包含每个表单错误的字典列表。还有formset.non_form_errors(),它返回不属于特定表单的错误。