迭代Django formset时显示其他数据

jnn*_*nns 4 python django django-forms

我有一份足球比赛清单,我想要显示表格.该列表来自远程源.

matches = ["A vs. B", "C vs. D", "E vs, F"]
matchFormset = formset_factory(MatchForm,extra=len(matches))
formset = MatchFormset()
Run Code Online (Sandbox Code Playgroud)

在模板方面,我想显示带有相应标题的formset(即"A vs. B").

{% for form in formset.forms %}
    <fieldset>
        <legend>{{TITLE}}</legend>
        {{form.team1}} : {{form.team2}}
    </fieldset>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

现在我如何获得TITLE当前表单的正确标题?或者以不同的方式询问:如何matches使用与迭代相同的索引进行迭代formset.forms

感谢您的输入!

Ale*_*lli 6

我相信在Django模板语言中没有用于索引的内置过滤器,但是有一个用于切片(slice) - 因此我认为,在紧要关头,你可以使用1项切片(带forloop.counter0:forloop.counter)和.first在它上面提取你想要的价值.

当然,通过Python方面的一些合作来做它会更容易 - 你可以在Python代码中forms_and_matches设置一个上下文变量zip(formset.forms, matches),并且在模板中,{% for form, match in forms_and_matches %}简单地和可读地获取这两个项目(假设Django 1.0)当然,或者在整个答案中更好.

  • 家里有人抓住这个...我希望使用完全相同的东西,但不是这个(从formset中提取表单)失去了formset管理器(关于表单数量,初始形式,或许更多的元信息)是否包含在formset容器中?然后在读取POST数据时,它不知道要加载多少个表单..? (4认同)