Метод Django QuerySet .order_by()

У меня есть этот код здесь и, насколько я понимаю, order_by переписывает поведение по умолчанию опции упорядочивания в Meta модели. смотрите документацию здесь https://docs.djangoproject.com/en/4.1/ref/models/querysets/#order-by

Мой вопрос в том, какие критерии использует order_by() в данном случае для упорядочивания QuerySet, если не указаны поля? Имеет ли значение наличие этого критерия?

        order.discounts.filter(voucher_id=OuterRef("pk"))
        .order_by()
        .values("voucher_id")
        .annotate(Sum("amount"))
        .values("amount__sum")
    )

Вызов order_by() без параметров удаляет все упорядочивание из набора запросов, и результаты возвращаются в неустановленном базой данных порядке

Docs

Если вы не хотите, чтобы к запросу применялось какое-либо упорядочивание, даже упорядочивание по умолчанию, вызовите order_by() без параметров

.

Если в запросе не указано упорядочение, результаты возвращаются из базы данных в неопределенном порядке. Определенный порядок гарантируется только при упорядочивании по набору полей, которые однозначно идентифицируют каждый объект в результатах. Например, если поле name не является уникальным, упорядочивание по нему не гарантирует, что объекты с одинаковыми именами всегда будут появляться в одном и том же порядке.

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