【问题标题】:Displaying label on first form of Django formset only仅在 Django 表单集的第一个表单上显示标签
【发布时间】:2018-11-30 03:53:09
【问题描述】:

这是一个非常简单的问题,但我似乎找不到任何简洁的答案。我有一个 Django formset,它显示与对象关联的不同标签。这是表格:

class TagForm(forms.Form):

    def __init__(self, *args, **kwargs):
        tags = kwargs.pop('tags')
        super(TagForm, self).__init__(*args, **kwargs)
        self.fields['tags'] = forms.ChoiceField(choices=[(tag, tag) for tag in tags], label="Tags")

我正在使用以下代码呈现表单集:

<li class="list-group-item">
    <ul class="list-inline" id="tag-group">
        {{ tag_formset.management_form }}
        {% for tag_form in tag_formset %}
            <li class="list-inline-item">
                {{ tag_form.tags.label_tag }}
                {{ tag_form.tags }}
            </li>
        {% endfor %}
    </ul>
</li>

我的问题是这会为每个标签创建一个标签。由于这是一个内联列表,我只想在第一个标签之前显示标签(而不是其他标签)。我找不到任何直接的方法来做到这一点(不修改 for 循环并通过显式逻辑检查它是否是正在呈现的第一个表单)。我乐观地尝试将我的渲染代码修改为以下内容:

<li class="list-group-item">
    <ul class="list-inline" id="tag-group">
        {{ tag_formset.management_form }}
        {{ tag_form.empty_form.label_tag }}
        {% for tag_form in tag_formset %}
            <li class="list-inline-item">
                {{ tag_form.tags }}
            </li>
        {% endfor %}
    </ul>
</li>

但这根本没有显示任何标签。有没有一种惯用的方法来仅在表单集中的第一个表单之前显示表单标签?

【问题讨论】:

    标签: django django-forms django-templates


    【解决方案1】:

    下面的代码对我有用。主要思想很简单。制作一个表格并在标题中放置标签。在表体中只放数据。试试看,让我知道。

    {% for f1 in formset %} {{ f1.management_form|crispy }}

        {% crispy f1 %}
        {% endcomment %}
    
        <table{% if form_id %} id="{{ form_id }}_table" {% endif%} class="table table-striped table-condensed">
            <thead>
                {% if formset.readonly and not formset.queryset.exists %}
                {% else %}
                <tr>
                    <td>
    
                    </td>
    
                    {% for field in formset.forms.0 %}
                    {% if field.label and not field.is_hidden %}
                    <th for="{{ field.auto_id }}"
                        class="control-label {% if field.field.required  %}requiredField{% endif %}">
                        {{ field.label|safe }}{% if field.field.required  %}<span
                            class="asteriskField">*</span>{% endif %}
                    </th>
                    {% endif %}
                    {% endfor %}
                </tr>
                {% endif %}
            </thead>
    
            <tbody>
                {% comment %} <tr class="hidden empty-form">
                    {% for field in formset.empty_form %}
                    {% include 'bootstrap/field.html' with tag="td" form_show_labels=False %}
                    {% endfor %}
                </tr> {% endcomment %}
    
                {% for form2 in formset2 %}
                {% if form2_show_errors and not form2.is_extra %}
                {% include "bootstrap/errors.html" %}
                {% endif %}
    
                <tr>
                    <td>
    
    
                        <a class="btn btn-info pull-right" {% comment %}
                            href="{% url 'set_final' formfs.pk %}/?next={% url 'update-well-view' form.pk %}">
                            {% endcomment %}
                            href="{% url 'Scouts-home'  %}"> Set Final
                        </a>
    
    
                    </td>
                    {% for field in form2 %}
                    {% include 'bootstrap/field.html' with tag="td" form2_show_labels=False %}
                    {% endfor %}
    
    
                </tr>
                {% endfor %}
    
    
            </tbody>
            </table>
    

    【讨论】:

      猜你喜欢
      • 2019-09-02
      • 1970-01-01
      • 2021-01-31
      • 2011-07-13
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 1970-01-01
      相关资源
      最近更新 更多