You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模板按日期年份分组问题:代码无法正常运行

解决Django模板按Datetime年份分组失效问题

Django的regroup标签生效的前提是被分组的列表必须先按分组依据的字段排序,如果你的notificacoes查询集未提前排序,同一年份的条目如果不连续,会被拆成多个分组,看起来就像代码没生效。

解决方法

1. 后端查询时提前排序(推荐)

在视图中给查询集加上排序逻辑,确保数据按criados字段排序:

# 正序排序(从旧到新)
notificacoes = Notificacao.objects.all().order_by('criados')

# 或者按年份倒序(从新到旧)
notificacoes = Notificacao.objects.all().order_by('-criados__year')

2. 模板内临时排序(仅小数据量使用)

如果无法修改后端代码,也可以在模板中用dictsort过滤器先排序,不过这种方式性能不如后端排序,不适合大数据集:

{% regroup notificacoes|dictsort:"criados" by criados|date:"Y" as criados_list %}
<ul>
  {% for x in criados_list %}
    <li>
      {{ x.grouper }}
      <ul>
        {% for y in x.list %}
          <li>{{ y.slug }} : {{ y.arquivo }}</li>
        {% endfor %}
      </ul>
    </li>
  {% endfor %}
</ul>

额外排查点

  • 确认criados字段在模型中是DateTimeField或DateField类型,否则date过滤器无法正常解析年份。
  • 检查notificacoes查询集是否包含有效数据,空数据集不会显示任何分组内容。

内容的提问来源于stack exchange,提问作者Lucas Medeiros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:15:27