Группировка по месяцам в Django и извлечение как datetime.date () - PullRequest
1 голос
/ 30 марта 2012

Я искал, как сгруппировать набор запросов 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.

Возможно ли преобразовать строку в дату или время в запросе или шаблоне.Или мне нужно перебрать все записи?

Извините за публикацию в отдельном тренде, но у меня недостаточно привилегий, чтобы просто комментировать исходный.

1 Ответ

6 голосов
/ 30 марта 2012

Вы можете попробовать использовать тег шаблона 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 %}
...