仅在第一个Django表单集上显示标签

时间:2018-06-20 22:30:54

标签: django django-forms django-templates

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

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>

,但这根本不显示任何标签。是否有一种惯用的方式,仅在表单集中的第一个表单之前显示表单标签?

1 个答案:

答案 0 :(得分:0)

以下代码对我有用。主要思想很简单。制作表格,并在标题中放置标签。并在表格主体中仅放置数据。试试吧,让我知道。

{{f1 for 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>