Как фильтровать в 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")
Вернуться на верх