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

问题描述 投票:1回答:1

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

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

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

django django-forms django-templates
1个回答
3
投票

首先,检查formset是否绑定。

formset.is_bound

如果您尚未将formset绑定到任何数据,那么它将不会有任何错误,但它永远不会有效。

其次,确保你调用is_valid方法

formset.is_valid()

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

© www.soinside.com 2019 - 2024. All rights reserved.