Django queryset с __date возвращает Nones
У меня есть django queryset, где я хочу группировать по created_at
значению даты (created_at
это поле datetime).
(Activity.objects
.values('created_at__date')
.annotate(count=Count('id'))
.values('created_at__date', 'count')
)
Я следую принятому ответу здесь, который имеет смысл. Однако запрос возвращает None
для всех значений created_at__date
. Когда я меняю его на created_at
, он показывает фактическое значение.
Сгенерированный SQL-запрос:
SELECT
django_datetime_cast_date("activity"."created_at", 'UTC', 'UTC'),
COUNT("activity"."id") AS "count"
FROM
"activity"
GROUP BY
django_datetime_cast_date("activity"."created_at", 'UTC', 'UTC')
Причина в том, что база данных sqlite3 не может хранить информацию о часовых поясах, так как не поддерживает встроенную дату и/или время. А поскольку дата образца содержит информацию о часовом поясе, sqlite3 не может извлечь дату из поля datetime и показывает None.
правильный формат для sqlite3
2021-11-29 12:40:20.021350