1

我环顾四周,看看如何按月对 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:按日期分组(日、月、年)

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

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

很抱歉在单独的趋势中发布,但我没有足够的特权来评论原始趋势。

4

1 回答 1

7

您可以尝试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 %}
于 2012-03-30T09:08:55.867 回答