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

Posted

技术标签:

【中文标题】django模板循环一些表行只显示一次【英文标题】:django template for loop some table rows display only once 【发布时间】:2012-12-18 00:42:11 【问题描述】:

型号:

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 次

【问题讨论】:

你试过order_by()吗?订购后,您可以对其进行排序。您需要在视图中执行此操作 是的,我正在使用 order_by() 但它只是按天对所有用户进行排序,这不是我的问题。对每个用户组只显示一次日期没有帮助 我会改变你使用 for 循环的方式。我会在一周中的每一天循环并打印出所有用户 你能展示一段代码,你将如何使用它?我必须承认我不明白如何在模板中使用循环 【参考方案1】:

您可能需要ifchanged 模板标签。

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

【讨论】:

以上是关于django模板循环一些表行只显示一次的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 模板中使用 for 循环显示多个 chart.js 图表

模板中的Django“显示一次”

在Django模板中使用for循环显示多个chart.js图表

Django学习-8-模板渲染的一些特性

Django模板不显示循环键、值

Django模板仅在for循环中第一次出现匹配时执行