Django查询集.order_by()方法

7lrncoxx  于 2022-12-01  发布在  Go
关注(0)|答案(1)|浏览(157)

我在这里写了这段代码,根据我的理解,order_by覆盖了模型Meta中ordering选项的默认行为。请参阅此处的文档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")
    )
kr98yfug

kr98yfug1#

不带参数调用order_by()会删除查询集中的所有排序,数据库将以未指定的顺序返回结果
文档
如果不希望对查询应用任何排序,甚至不希望应用默认排序,请不带参数调用order_by(
如果查询没有指定顺序,则结果将以未指定的顺序从数据库返回。只有当按一组唯一标识结果中每个对象的字段进行排序时,才能保证特定的顺序。例如,如果名称字段不是唯一的,则按它进行排序不能保证具有相同名称的对象始终以相同的顺序出现。

相关问题