Django models order_by non db field

django, sql-order-by

Solution

Look into the `extra` Django queryset operator:

q = Foo.objects.extra(select={'dif': 'foo_old_prize - foo_new_prize'})
q = q.extra(order_by = ['dif'])

Problem

I have this model: ``` class Foo(models.Model): foo_id = models.IntegerField() foo_old_prize = models.FloatField() foo_new_prize = models.FloatField() def get_dif(self): return self.foo_old_prize - self.foo_new_prize ``` Is there some trick how to do this `Foo.objects.all().order_by('get_dif')` ? Thx

Original source