【发布时间】: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