Как фильтровать в django, чтобы получить каждую дату последней записи
Пример
Таблица рекордов
id value created_datetime
1 10 2022-01-18 10:00:00
2 11 2022-01-18 10:15:00
3 8 2022-01-18 15:15:00
4 25 2022-01-19 09:00:00
5 16 2022-01-19 12:00:00
6 9 2022-01-20 11:00:00
Я хочу отфильтровать эту таблицу 'Record Table' как получение последнего значения каждой даты. Например, есть три даты 2022-01-18, 2022-01-19, 2022-01-20, в которых последние значения этих дат следующие
Latest value of each dates are (Result that iam looking to get)
id value created_datetime
3 8 2022-01-18 15:15:00
5 16 2022-01-19 12:00:00
6 9 2022-01-20 11:00:00
Как отфильтровать, чтобы получить результаты в виде вышеуказанной таблицы
Это можно сделать в два этапа:
Сначала получите последнее время даты для каждого дня, а затем отфильтруйте записи по нему.
max_daily_date_times = Record.objects.extra(select={'day': 'date( created_datetime )'}).values('day') \
.annotate(latest_datetime=Max('created_datetime'))
records = Record.objects.filter(
created_datetime__in=[entry["latest_datetime"] for entry in max_daily_date_times]).values("id", "value",
"created_datetime")