2012-06-28 45 views
2

我目前使用選項來定義月份列表和星期幾列表。如何迭代模板中的Django CHOICES,而無需使用表單或模型實例

我想在我的模板中顯示這些選項列表,而不必涉及特定的實例或表單。

例如...

在我的模型:

MONTH_CHOICES = (
    ('01', 'January'), 
    ('02', 'February'), 
    ('03', 'March'), 
etc 

DAY_CHOICES = (
    ('01', 'Monday'), 
    ('02', 'Tuesday'), 
    ('03', 'Wednesday'), 
etc 

class Item(models.Model): 
    month = models.CharField(choices=MONTH_CHOICES) 
    day = models.CharField(choices=DAY_CHOICES) 

筆者認爲:

month_choices = MONTH_CHOICES 

在我的模板:

{% for month in month_choices %} 
{{ month }}<br /> 
{% endfor %} 

上面的代碼輸出:

('01', 'January') 
('02', 'February') 
('03', 'March') 

如何輸出每個選項的名稱(或值)?

另外,是否有更好的方式記錄模型的一個月和一週中的某一天 - 然後使用一個月和一天來分組/呈現實例?

謝謝! :)

回答

2
{% for month in month_choices %} 
{{ month.1 }}<br /> 
{% endfor %} 

雖然語義,你應該使用<ul><li>而非<br>

+0

謝謝!我會給它一個去... 我實際上並沒有使用
順便說一句 - 我實際上使用選項來安排表中的項目......幾個月形成一個軸 - 和幾天形成另一個。 我不確定如何以最佳方式使用選擇 - 但我無法找到一種構建真正代表月份的Django字段的簡單方法 - 並向用戶提供月份列表 – tominwood

+0

任何想法如何我在一個視圖中做同樣的事情? .1似乎不工作......我循環選擇,它輸出整個元組。 – tominwood

6

遍歷它時,你可以簡單地把它解析:

{% for n, month in month_choices %} 
{{ n }}, {{ month }}<br /> 
{% endfor %} 
+1

這是正確的答案。 – Chris

7

有一個更好的方式來做到這一點。

{% for value, text in form.[field_name].field.choices %} 
    {{ value }}: {{ text }} 
{% endfor %} 

窗體是您傳遞給模板的窗體變量。 [field_name]是您在模型中定義的字段名稱。在這種情況下'月'

相關問題