【发布时间】:2022-11-09 15:36:31
【问题描述】:
我想用大学科目的复选框实现一个页面,用户可以选择哪些已经完成,我编写了一个 for 循环,在页面中显示该课程的所有科目,但我想按学期将科目分开div,但在同一页面中,我可以使用自定义模板标签或过滤器来执行此操作吗?
我曾尝试在查询上使用 .filter,但在这种情况下只返回一个指定的学期。
【问题讨论】:
-
请提供足够的代码,以便其他人可以更好地理解或重现该问题。
我想用大学科目的复选框实现一个页面,用户可以选择哪些已经完成,我编写了一个 for 循环,在页面中显示该课程的所有科目,但我想按学期将科目分开div,但在同一页面中,我可以使用自定义模板标签或过滤器来执行此操作吗?
我曾尝试在查询上使用 .filter,但在这种情况下只返回一个指定的学期。
【问题讨论】:
regroup 模板标签可以提供帮助。
示例模板代码:
{% regroup subjects by semester as semester_list %}
{% for semester, grouped_subjects in semester_list %}
<div>
{# your code for semester here #}
<div>
{% for subject in grouped_subjects %}
{# your code for subject here #}
{% endfor %}
</div>
</div>
{% endfor %}
阅读更多关于docs
——
编辑:
regroup 依赖于查询集的排序。
将上面代码中的第一行更改为
{% regroup subjects|dictsort:'semester' by semester as semester_list %}
【讨论】:
Subject 模型班是否有任何与学期相关(或可以转换为)的属性?如果是这样,请进行转换,然后您可以进行regroup。
dictsort 模板过滤器来解决。我将编辑我的答案以包括这部分。