我有一份足球比赛清单,我想要显示表格。该列表来自远程源。
matches = ["A vs. B", "C vs. D", "E vs, F"]
matchFormset = formset_factory(MatchForm,extra=len(matches))
formset = MatchFormset()
在模板方面,我想显示带有相应标题的formset(即“A vs. B”)。
{% for form in formset.forms %}
<fieldset>
<legend>{{TITLE}}</legend>
{{form.team1}} : {{form.team2}}
</fieldset>
{% endfor %}
现在如何让TITLE
包含当前表单的正确标题?或者以不同的方式询问:如何使用与matches
上的迭代相同的索引迭代formset.forms
?
感谢您的投入!
答案 0 :(得分:6)
我相信在Django模板语言中没有用于索引的内置过滤器,但是有一个用于切片(slice
) - 因此我认为,在紧要关头,你可以使用单项切片(包含forloop.counter0:forloop.counter
)和.first
可提取您想要的值。
当然,通过Python方面的一些合作来实现它会更容易 - 你可以在Python代码中将上下文变量forms_and_matches
设置为zip(formset.forms, matches)
,并且在模板中,{% for form, match in forms_and_matches %}
简单而可读地获取这两个项目(当然,假设Django 1.0或更好,在整个答案中)。
答案 1 :(得分:2)
这是Alex回答的补充。
在我对Alex的回答发表评论之后,我做了一些阅读,并发现将管理表单(基本上是一个包含有关表单集中有多少表单的信息的元表单)放入模板中以提交数据非常重要被视为一种形式,而不仅仅是一堆形式。 Documentation here
我知道将其纳入模板的唯一两种方法是:
当然,如果您使用Alex的第一种方法,则表单集已经可用,因此您可以直接添加管理表单。