错误消息中的 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 字段标签的主要内容,如果未能解决你的问题,请参考以下文章

Django之路——form modelform formset modelformset的各种用法

Django formset,查询每个表单的关系字段

Django:如何使用 formset extra 更改标签?

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

需要在 Django Formset 中有一个必填字段和可选字段

如何在 Django 中根据需要为 formset_factory 设置每个字段(如何验证表单集中的空白表单)