我有这个型号:
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
是否有一些技巧如何执行此操作Foo.objects.all().order_by('get_dif')
?
THX
答案 0 :(得分:4)
查看extra
Django查询集运算符:
q = Foo.objects.extra(select={'dif': 'foo_old_prize - foo_new_prize'})
q = q.extra(order_by = ['dif'])
答案 1 :(得分:3)
您可以使用extra
:
Foo.objects.extra(
select={'diff':'foo_old_prize - foo_new_prize'},
order_by=('diff',)
)
答案 2 :(得分:0)
我不确定你能不能这样做。
这是另一种应该起作用的方法:
objList = Foo.objects.all()
objList.sort(key = get_dif)