6

我目前使用选项来定义月份列表和一周中的几天列表。

我想在我的模板中显示这些选项列表,而不必与特定实例或表单相关。

例如...

在我的模型中:

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')

如何只输出每个选项的名称(或值)?

或者,是否有更好的方法来记录模型的月份和星期几 - 以及稍后使用月份和日期对实例进行分组/呈现?

谢谢!:)

4

3 回答 3

19

有更好的方法来做到这一点。

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

form 是您传递给模板的表单变量。[field_name] 是您在模型中定义的字段名称。在这种情况下,“月”

于 2015-02-27T20:52:11.740 回答
9

您可以在迭代元组时简单地解包它:

{% for n, month in month_choices %}
{{ n }}, {{ month }}<br />
{% endfor %}
于 2012-06-28T10:30:10.490 回答
3
{% for month in month_choices %}
{{ month.1 }}<br />
{% endfor %}

尽管从语义上讲,您可能应该使用<ul>and<li>而不是<br>.

于 2012-06-28T10:07:44.997 回答