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

如何在Django模板中按天分组展示日志数据对象

Django日志按天分组展示实现方案

你可以选择以下任意一种方式实现需求,其中模板标签方式改动量最小,优先推荐。


方案1:使用Django内置regroup模板标签(推荐)

不需要修改现有视图逻辑,仅调整模板即可实现:

  • 前置校验:现有代码中查询集已经通过order_by('-created')按创建时间倒序排列,满足分组要求。注意:regroup标签要求数据必须预先按分组字段排序,否则会出现同日期数据被拆分成多个组的问题。
  • 模板调整:替换logs_list.html原有代码为以下内容:
{% regroup logs by created|date:"Y-m-d" as date_groups %}

{% for group in date_groups %}
<div class="mb-4">
    <h5 class="text-uppercase font-weight-bold">{{ group.list.0.created|date:"F d, Y" }}</h5>
    <hr>
    {% for log in group.list %}
    <div class="row mb-2">
        <div class="col-lg-12">
            <p style="color:black;max-width:1000px;margin:0;">
                {{ log.log|safe }}
                <small style="color:gray;" class="float-right">{{ log.created|date:"H:i A" }}</small>
            </p>
        </div>
    </div>
    {% endfor %}
</div>
{% endfor %}

说明:分组键使用Y-m-d纯数字日期格式,可避免多语言场景下月份名称差异导致的分组错误;组标题取分组内第一条数据的日期,格式化为大写的「月份 日, 年」格式,和预期展示效果完全一致。


方案2:后端视图层提前分组

如果需要在后端对分组数据做额外业务处理,可以在视图层通过itertools.groupby完成分组,再传给模板:

  • 引入依赖:在views.py顶部添加导入语句
from itertools import groupby
  • 修改视图分组逻辑:调整视图类的get_logs方法,完成按天分组
def get_logs(self):
    logs = Logs.objects.all().order_by('-created')
    # 按日期维度分组,key为日期对象,value为当天的所有日志
    grouped_logs = {}
    for log_date, log_items in groupby(logs, key=lambda x: x.created.date()):
        grouped_logs[log_date] = list(log_items)
    return grouped_logs
  • 调整模板遍历逻辑:修改logs_list.html遍历分组后的数据
{% for log_date, log_items in logs.items %}
<div class="mb-4">
    <h5 class="text-uppercase font-weight-bold">{{ log_date|date:"F d, Y" }}</h5>
    <hr>
    {% for log in log_items %}
    <div class="row mb-2">
        <div class="col-lg-12">
            <p style="color:black;max-width:1000px;margin:0;">
                {{ log.log|safe }}
                <small style="color:gray;" class="float-right">{{ log.created|date:"H:i A" }}</small>
            </p>
        </div>
    </div>
    {% endfor %}
</div>
{% endfor %}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:48:17