我四处寻找如何按月对 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 %}
关于python - 在 Django 中按月分组并检索为 datetime.date(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9937381/