Issue
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?
Solution
You can use extra
for this.
Component.objects.extra(
select={'fieldsum':'material_cost + labor_cost'},
order_by=('fieldsum',)
)
See the documentation.
Answered By - Daniel Roseman
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.