如何在模板中迭代Django选项-而不使用表单或模型实例

2024-05-04 21:43:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在使用选项来定义一个月列表和一周中的一天列表。

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

例如。。。

在我的模型中:

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

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

或者,是否有更好的方法来记录模型的一个月和一周中的一天,以及以后使用一个月和一天对实例进行分组/呈现?

谢谢!:)


Tags: 实例模型模板列表models选项etcchoices
3条回答

有更好的办法。

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

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

迭代元组时,只需解压元组即可:

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

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

相关问题 更多 >