Почему .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
<

Есть советы?

Вернуться на верх