2011-02-14 92 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對象 –