Django QuerySet 按表达式排序

And*_*rew 5 django orm django-queryset

可能的重复:
django - 按计算字段排序查询集

我如何使用 order_by 像 order_by('field1'*'field2') 例如,我有以不同货币列出价格的商品,因此要订购商品 - 我必须进行货币转换。

class Currency(models.Model):
    code    = models.CharField(max_length=3, primary_key=True) 
    rateToUSD   = models.DecimalField(max_digits=20,decimal_places=10)

class Item(models.Model):
    priceRT     = models.DecimalField(max_digits=15, decimal_places=2, default=0)
    cur     = models.ForeignKey(Currency)
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西:

Item.objects.all().order_by(F('priceRT')*F('cur__rateToUSD'))
Run Code Online (Sandbox Code Playgroud)

但不幸的是它不起作用,我的注释也失败了。我如何通过 2 个模型字段的值相乘的结果来执行 QuerySet 排序。

Ign*_*ams 4

使用该extra()方法。具体来说,select是指定方程的参数,以及order_by进行排序的参数。