Метод 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()
без параметров удаляет все упорядочивание из набора запросов, и результаты возвращаются в неустановленном базой данных порядке
Если вы не хотите, чтобы к запросу применялось какое-либо упорядочивание, даже упорядочивание по умолчанию, вызовите order_by() без параметров
.
Если в запросе не указано упорядочение, результаты возвращаются из базы данных в неопределенном порядке. Определенный порядок гарантируется только при упорядочивании по набору полей, которые однозначно идентифицируют каждый объект в результатах. Например, если поле name не является уникальным, упорядочивание по нему не гарантирует, что объекты с одинаковыми именами всегда будут появляться в одном и том же порядке.