Проблема с использованием 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 ...;
Если это даст вам то, что вам нужно, тогда издайте его как необработанную команду и игнорируйте остальную часть хлопот.