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 %}