3

私はこのモデルを持っています:

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')か?

どうも

4

3 に答える 3

4

Djangoextraクエリセット演算子を調べます。

q = Foo.objects.extra(select={'dif': 'foo_old_prize - foo_new_prize'})
q = q.extra(order_by = ['dif'])
于 2012-10-29T13:53:22.583 に答える
3

これに使用できますextra

Foo.objects.extra(
    select={'diff':'foo_old_prize - foo_new_prize'},
    order_by=('diff',)
)
于 2012-10-29T13:54:17.330 に答える
0

あなたがそのようにできるかどうかはわかりません。
動作するはずの別の方法を次に示します。

objList = Foo.objects.all()
objList.sort(key = get_dif)
于 2012-10-29T13:55:04.663 に答える