代码之家  ›  专栏  ›  技术社区  ›  user3541631

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

  •  2
  • user3541631  · 技术社区  · 7 年前

    我在使用Django内联表单集创建时出现了一个奇怪的错误。

    Django正在报告表单集错误,因此无法完成创建。

    我也测试过 is_valid 它返回真值。怎么了?

    但如果我检查它们,错误字典中就没有任何内容:

    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 回复  |  直到 7 年前
        1
  •  4
  •   Alasdair    7 年前

    首先,检查表单集是否已绑定。

    formset.is_bound
    

    如果尚未将表单集绑定到任何数据,则它不会有任何错误,但永远不会有效。

    其次,确保您正在呼叫 is_valid 方法

    formset.is_valid()
    

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