Django order_by字段总和

发布于 2021-01-29 17:02:14

是否可以使用django ORM通过两个不同字段的总和对查询集进行排序?

例如,我有一个看起来像这样的模型:

class Component(models.Model):
    material_cost = CostField()
    labor_cost = CostField()

我想做这样的事情:

component = Component.objects.order_by(F('material_cost') + F('labor_cost'))[0]

但不幸的是,F对象似乎不适用于“ order_by”。django有可能发生这种情况吗?

关注者
0
被浏览
47
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以extra为此使用。

    Component.objects.extra(
        select={'fieldsum':'material_cost + labor_cost'},
        order_by=('fieldsum',)
    )
    

    请参阅文档



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看