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

Posted

技术标签:

【中文标题】错误消息中的 Django Formset 字段标签【英文标题】:Django Formset field label in error messages 【发布时间】:2019-09-23 17:41:16 【问题描述】:

是否有一种简单的方法可以在 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】:

我看不到从字段字符串到模板中的字段实例的简单方法,因此您可能必须迭代表单和字段而不是 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 %

【讨论】:

以上是关于错误消息中的 Django Formset 字段标签的主要内容,如果未能解决你的问题,请参考以下文章