我四处寻找如何按月对 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 %}
