Possible Duplicate:
django - ordering queryset by a calculated field
我如何使用 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)
我想要这样的东西:
Item.objects.all().order_by(F('priceRT')*F('cur__rateToUSD'))
但不幸的是它不起作用,我的注释也失败了。 我如何通过 2 个模型字段的值相乘的结果来执行 QuerySet 排序。
最佳答案
使用extra()
方法。具体来说,select
参数用于指定方程,order_by
参数用于执行排序。
关于Django QuerySet 按表达式排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2926931/