我环顾四周,看看如何按月对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 %}

10-07 16:52