Skip to main content
 首页 » 编程设计

python之在 Django 中按月分组并检索为 datetime.date()

2025年05月04日29findumars

我四处寻找如何按月对 Django 查询集进行分组。我终于找到了这段非常有用的代码:

truncate_date = connection.ops.date_trunc_sql('day','timestamp') 
qs = qs.extra({'date':truncate_date}) 
return qs.values('date').annotate(Sum('amount')).order_by('date') 

来自 Django: Group by date (day, month, year)

它工作正常,但是返回的 date 是一个字符串而不是正确的 datetime.date 我不能使用 {{date|date: format}} 在模板中。原来的发件人 (Oli) 似乎也有同样的问题。尽管回答的人说它适用于 postgres,但我在 SQLite 上没有取得任何成功。

是否可以在查询或模板中将字符串转换为日期时间。还是我必须遍历所有条目?

很抱歉在一个单独的趋势中发帖,但我没有足够的权限只能在原始趋势中发表评论。

请您参考如下方法:

您可以尝试使用 regroup在模板级别按月份分组的模板标签。确保您的上下文数据已排序:

{% regroup queryset by date_field|date:"M, Y" as objects_by_month %} 
{% for group in objects_by_month %} 
    {{ group.grouper }} 
    {% for object in group.list %} 
        {{ object }} 
    {% endfor %} 
{% endfor %}