Python 在Django表单集上迭代时显示其他数据

Python 在Django表单集上迭代时显示其他数据,python,django,django-forms,Python,Django,Django Forms,我有一个足球比赛的列表,我想显示它的表格。该列表来自远程源 matches = ["A vs. B", "C vs. D", "E vs, F"] matchFormset = formset_factory(MatchForm,extra=len(matches)) formset = MatchFormset() 在模板方面,我想显示具有相应标题的表单集(即“A vs.B”) {%forformset.forms%} {{TITLE}} {{form.team1}}:{{form.team

我有一个足球比赛的列表,我想显示它的表格。该列表来自远程源

matches = ["A vs. B", "C vs. D", "E vs, F"]
matchFormset = formset_factory(MatchForm,extra=len(matches))
formset = MatchFormset()
在模板方面,我想显示具有相应标题的表单集(即“A vs.B”)

{%forformset.forms%}
{{TITLE}}
{{form.team1}}:{{form.team2}
{%endfor%}
现在,我如何获取
TITLE
以包含当前表单的正确标题?或者以不同的方式问:如何使用与迭代
formset.forms
相同的索引迭代
匹配项


谢谢你的意见

我相信在Django模板语言中没有用于索引的内置过滤器,但有一个用于切片(
slice
)——因此,我认为,在必要时,您可以使用一个1项切片(带有
forloop.counter0:forloop.counter
)和
。首先对其进行
,以提取您想要的值


当然,通过Python方面的一些合作更容易做到这一点——您可以在Python代码中将上下文变量
forms\u和\u matches
设置为
zip(formset.forms,matches)
,在模板中,
{%for form,match in forms\u和\u matches%}
以简单易读地获取这两项(当然,在整个回答中假设Django 1.0或更好)。

这是对Alex答案的补充

在我对Alex的回答发表评论后,我阅读了一些内容,发现将管理表单(基本上是一个元表单,其中包含表单集中有多少表单的信息)放入模板中非常重要,因为您提交的数据将被视为一个表单集,而不仅仅是一堆表单

我所知道的将其纳入模板的唯一两种方法是:

  • 除了您创建的任何数据结构之外,还发送表单集, 然后用{my_formset.management_form}呈现管理表单
  • 在视图中呈现管理表单,并将其作为项目发送到模板

  • 当然,如果您使用Alex的第一种方法,那么表单集已经可用,因此您可以直接添加管理表单。

    非常感谢您,Alex。压缩是一个非常漂亮和简单的解决方案!家里有人发现了这一点……我希望使用完全相同的方法,但这(从表单集中提取表单)不会失去表单集管理器吗(关于表单数量的元信息,初始表单,可能更多)包含在表单集容器中?那么在读取POST数据时,它不知道要加载多少表单。。?
    {% for form in formset.forms %}
        <fieldset>
            <legend>{{TITLE}}</legend>
            {{form.team1}} : {{form.team2}}
        </fieldset>
    {% endfor %}