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

Fer*_*ira 1 python django datetime django-aggregation

我正在四处寻找如何按月分组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')
Run Code Online (Sandbox Code Playgroud)

来自Django:按日期分组(日,月,年)

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

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

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

Tim*_*ony 6

您可以尝试使用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 %}
Run Code Online (Sandbox Code Playgroud)