Почему .last()/.first() изменяют порядок упорядоченного и отличного набора запросов?
У меня есть такой запрос - ему нужно отфильтровать значения по дате, и в случае, если у нас есть приоритеты по датам (x), мы устанавливаем правильный порядок, в котором находятся нужные нам данные.
def filterX(self, order_list=[3,2,1], *args, **kwargs):
return (
self.get_queryset()
.filter(*args, **kwargs)
.order_by(
"date",
Case(
*[
When(x=y, then=Value(i))
for i, y in enumerate(order_list)
],
default=None,
).asc(),
)
.distinct("date")
)
Так что мне нужен только один элемент на одну дату с наивысшим порядком. И это прекрасно работает. Из таблицы 1 у меня есть таблица 2 ->
Таблица 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 | 2 |
Таблица 2.
ID | DATE | PRIORITY |
---|---|---|
1 | 2022/11/1 | 3 |
4 | 2022/11/2 | 2 |
5 | 2022/11/3 | 2 |
Есть советы?