Ответ 1
Вы можете использовать extra
для этого.
Component.objects.extra(
select={'fieldsum':'material_cost + labor_cost'},
order_by=('fieldsum',)
)
Смотрите документацию.
Можно ли использовать ORM django для заказа набора запросов на сумму двух разных полей?
Например, у меня есть модель, которая выглядит так:
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?
Вы можете использовать extra
для этого.
Component.objects.extra(
select={'fieldsum':'material_cost + labor_cost'},
order_by=('fieldsum',)
)
Смотрите документацию.
Использовать дополнительно:
Component.objects.extra(select = {'total_cost' : 'material_cost + labor_cost'},
order_by = ['total_cost',])[0]