2011-02-14 56 views
1

如何使这个循环打印表单域XXXXXXXX是ticket.id的值?Django模板:表单字段名称作为变量?

{% for ticket in zone.tickets %} 
    {{ ticket.id }}: {{ form.ticket_count_XXXXXXXX }} 
{% endfor %} 

所以输出是这样的......

1: <input ... name="ticket_count_1"> 
10: <input ... name="ticket_count_10"> 
12: <input ... name="ticket_count_12"> 
3: <input ... name="ticket_count_3"> 
+0

我喜欢这样:http://stackoverflow.com/a/12307727/177293 –

回答

3

你不能传递参数在Django模板,所以没有。你需要实现一个模板标签(更多的痛苦)或者过滤器,或者在你的视图(我会推荐)中将关联从ticket改为formfield

由于我实际上并不知道ticket与您的表单字段之间的关系,所以我无法确定最佳方法是什么,但根据您提供的信息,这只会“正常工作”。

# view 
form = MyForm() 
for ticket in zone.tickets: 
    ticket.form_field = form['ticket_count_' + str(ticket.id)] 

# template 
{% for ticket in zone.tickets %} 
    {{ ticket.id }} : {{ ticket.form_field }} 
{% endfor %} 
+0

这看起来像它会工作“#ticket [ 'form_field'] = purchaseForm.fields [ 'ticket_' + STR(票[ 'ID'])];”但字段HTML insted我得到“” –

+0

哎呀,是的,我的意思是说getattr(形式,'attr') –

+0

是的,不要做form.fields ['字段'] - 这将从字面上得到字段对象,而不是作为小部件打印的BoundField对象 –