Проблема с использованием Datetime из базы данных и Django

Я пытаюсь сгенерировать некоторые основные данные диаграммы, но пока не могу, во всяком случае пока. Всякий раз, когда я получаю значения времени из моделей Django, это дает мне такой результат:

[print(i) for i in UserAnalyticsMeta.objects.all().values('created_at')[:3]]
{'created_at': datetime.datetime(2022, 8, 15, 22, 43, 23, 88381, tzinfo=datetime.timezone.utc)}
{'created_at': datetime.datetime(2022, 8, 15, 22, 48, 43, 944993, tzinfo=datetime.timezone.utc)}
{'created_at': datetime.datetime(2022, 8, 15, 22, 48, 49, 95255, tzinfo=datetime.timezone.utc)}

Что переводится как:

2022-08-15 22:43:23.088381+00:00
2022-08-15 22:48:43.944993+00:00
2022-08-15 22:48:49.095255+00:00

Однако, когда я пытаюсь вывести дату, я получаю вот такой результат:

[print(i) for i in UserAnalyticsMeta.objects.all().values('created_at__date')[:3]]
{'created_at__date': None}
{'created_at__date': None}
{'created_at__date': None}

В то время как я ожидаю:

2022-08-15
2022-08-15
2022-08-15

Я также заметил, что старая функция, которую я использовал, тоже больше не работает, и я чувствую, что это как-то связано с этим.

        select_data = {"date_created": """strftime('%%m/%%d/%%Y', created_at)"""}
        qs = self.extra(select=select_data).values('date_created').annotate(models.Sum("page_visits"))
        return qs

Теперь выдает ошибку:

OperationalError at /admin/app_name/model_name/
(1305, 'FUNCTION app_name.strftime does not exist')

Любая помощь будет оценена по достоинству! Спасибо.

Поскольку вы получаете объекты datetime при запросе к базе данных, вы можете просто использовать функцию date объектов datetime для получения нужной даты.

[print(i.date()) for i in UserAnalyticsMeta.objects.all().values('created_at')[:3]]

Похоже, что Django мешает.

SELECT DATE(created_at)
    FROM tablename
    WHERE ...;

Если это даст вам то, что вам нужно, тогда издайте его как необработанную команду и игнорируйте остальную часть хлопот.

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