1

模型:

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

在我的 sql 表中,我有 50 多个用户,每个人都分配了一周中的一天(即 user1 -> MON,user2 -> MON,user3 -> 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 将显示在数据库中找到的每个用户之上,这不是我想要的。

编辑: 我想避免在一周内每天复制整个 for 循环 7 次

4

1 回答 1

3

您可能需要ifchanged模板标签。

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

于 2013-01-03T16:24:48.960 回答