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

Вернуться на верх