Django模板和引导表

时间:2018-11-09 16:48:09

标签: python html django bootstrap-4

我有一个看起来像这样的Django查询集

Group Label Name
A     1     Jack
A     2     Ryan
B     2     Alice
C     1     Sam
B     1     Mark
...

基本上,我要在html中尝试做的是创建6个小表(3行2行)。但是,我希望第一个表按标签#排序为A组,第二个表按标签#排序为B组,等等。

我可以硬着头皮做6种不同的Django查询集,但这似乎效率很低。

我最初的想法是在django模板中有一个计数器来跟踪是否开始新行。但是,我不确定在django模板而不是视图中是否可以进行过滤和排序。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这就是我要做的:

  1. 使用order_by操作以所需的方式对查询集进行排序(按组,然后按标签排序)。
  2. 在模板中,使用ifchanged条件进行测试以查看是否有其他组。在这种情况下,您可以根据需要输出表标签。

上面第2项的示例:

{% for object in queryset %}
  {% ifchanged obj.group %}
  <table>
  {% endifchanged %}
    <tr>
      <td>{{ obj.label }}</td>
      <td>{{ obj.name }}</td>
    </tr>
  {% ifchanged obj.group %}
  </table>
  {% endifchanged %}
{% endfor %}