Is it possible to use the django ORM to order a queryset by the sum of two different fields?
For example, I have a model that looks like this:
class Component(models.Model):
material_cost = CostField()
labor_cost = CostField()
and I want to do something like this:
component = Component.objects.order_by(F('material_cost') + F('labor_cost'))[0]
But unfortunately, F objects don't seem to work with 'order_by'. Is such a thing possible with django?
You can use extra
for this.
Component.objects.extra(
select={'fieldsum':'material_cost + labor_cost'},
order_by=('fieldsum',)
)
See the documentation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With