django模板for循环一些表行只显示一次

时间:2013-01-03 16:02:53

标签: python django django-templates django-template-filters

型号:

class Subject (models.Model):
    name = models.CharField(max_length=50)
    day = models.CharField(max_length=50)

在我的sql表中,我有超过50个用户,每个人都分配了一周中的一天(即用户1 - > MON,用户2 - > MON,用户3 - > WED ...)

在下面的模板中,我想显示带有天数和主题名称的表格, 但是我想只显示一天作为用户组的负责人。

<table>
<tr class="head"><th>SUBJECTS</th></tr>

{% for field in subjects_all %}
    {% if forloop.first %}
    <tr class="head"><td colspan=5 align="center">MONDAY</td></tr>
    {% endif %}

    {% if field.day == "MON"  %}
    <tr><td>{{ field.name }}</td></tr>
    {% endif %}

    {% if ... } # <- ???
    <tr class="head"><td colspan=5 align="center">TUESDAY</td></tr>
    {% endif %}

    {% if field.day == "TUE"  %}

    <tr><td>{{ field.name }}</td></tr>

    {% endif %}

    (...)

{% endfor %}

</table>

在下面的示例中,我知道我只能使用forloop.first显示一次星期一, 但是,如何在一组用户的顶部显示的剩余时间? 如果我正常'if',TUESDAY将显示在每个用户的顶部 在数据库中找到并且这不是我想要的。

修改 我想避免在一周内每天复制整个循环7次

1 个答案:

答案 0 :(得分:3)

您可能需要ifchanged模板标记。

或者,您可以使用regroup将项目分组为几天。