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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django InlineFormsets错误报告,其中formset错误列表为空相关的知识,希望对你有一定的参考价值。

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

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

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

答案

首先,检查formset是否绑定。

formset.is_bound

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

其次,确保你调用is_valid方法

formset.is_valid()

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

以上是关于django InlineFormsets错误报告,其中formset错误列表为空的主要内容,如果未能解决你的问题,请参考以下文章

Django 错误报告简单语法错误

使用 Gmail 的 Django 错误报告

Django 错误报告电子邮件 - 自定义设置参数

使用自定义 send_email 报告 Django 错误

Django 发生错误时如何将用户信息添加到 Sentry 的报告中?

如何从 Sentry 错误报告中过滤敏感的 Django POST 参数?