错误消息中的Django Formset字段标签

时间:2019-05-06 05:23:57

标签: django django-forms django-templates django-errors

是否有一种简单的方法来获取有关Django表单集的错误消息中的字段标签。我可以像这样正常形式进行操作:

{% if form.errors %}
    {% for field in form %}
        {% for error in field.errors %}
            <div class="alert alert-danger">
                <strong>{{ field.label }}: {{ error|escape }}</strong>
            </div>
        {% endfor %}
    {% endfor %}
    {% for error in form.non_field_errors %}
        <div class="alert alert-danger">
            <strong>{{ error|escape }}</strong>
        </div>
    {% endfor %}
{% endif %}    

但是,我想要相同的表单集。我最接近的是

{% if formset.errors %}
    {% for dict in formset.errors %}
        {% for field, error in dict.items %}
              <div class="alert alert-danger">
                  <strong>{{ field }}: {{ error|escape }}</strong>
              </div>
        {% endfor %}
    {% endfor %}
    {% endfor %}
    {% for error in formset.non_field_errors %}
        <div class="alert alert-danger">
            <strong>{{ error|escape }}</strong>
        </div>
    {% endfor %}
{% endif %}    

但是,这给了我字段名称(例如pub_date)而不是标签(例如发布日期)。任何帮助,不胜感激!

1 个答案:

答案 0 :(得分:0)

我看不到在模板中从字段字符串获取字段实例的简单方法,因此您可能不得不遍历表单和字段而不是formset.errors

{% if formset.errors %}
    {% for form in formset %}
        {% for field in form %}
            {% if field.errors %}
                <div class="alert alert-danger">
                    <strong>{{ field.label }}: {{ field.errors|escape }}</strong>
                </div>
            {% endif %}
        {% endfor %}
    {% endfor %}
    {% for error in formset.non_field_errors %}
        <div class="alert alert-danger">
            <strong>{{ error|escape }}</strong>
        </div>
    {% endfor %}
{% endif %}