Фильтровать только одну строку за одну дату для разных приоритетов
Из запроса, который возвращает несколько строк с разным приоритетом данных. Мне нужно создать подтаблицу, содержащую только одну дату с наивысшим приоритетом. Мой подход заключался в том, чтобы просто сделать несколько запросов и вернуть query.first(). Но это вызовет соединение с базой данных x раз, где x - количество различных дней.
list_of_queries = []
for date in dates list:
list_of_queries.append(
self.get_queryset().filter(date).order_by(
Case(
*[When(priority__iexact=priority, then=Value(i))
for i, priority in enumerate(priority_list)],
default=None
).asc()))
Таблица 1.
ID | DATE | PRIORITY |
---|---|---|
1 | 2022/11/1 | 1 |
2 | 2022/11/1 | 2 |
3 | 2022/11/1 | 3 |
4 | 2022/11/2 | 2 |
5 | 2022/11/3 | 1 |
6 | 2022/11/3 | 3 |
Таблица 2.
ID | DATE | PRIORITY |
---|---|---|
1 | 2022/11/1 | 1 |
4 | 2022/11/2 | 2 |
5 | 2022/11/3 | 1 |
Я думаю, что я мог бы использовать другой подход и просто собрать все строки с date__lte по date__gte и из этого подзапроса каким-то образом просто взять только одну дату. Но есть идеи, как это сделать в Django ORM? Или мне придется делать несколько запросов с фильтром = дата?