Django QuerySet 按表达式排序

标签 django orm django-queryset

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/

相关文章:

python - 如何在没有管理验证的情况下制作 django 表单字段

python - 属性错误: 'ModelFormOptions' object has no attribute 'private_fields' error message

json - 使用单个表绑定(bind)数组/结构中的多个列

python - 根据 Django 中的对象计数按一对多关系过滤

python - DRF - 如何更改 serializer.PrimaryKeyRelatedField 的过滤器查找键的条件?

python - 如何在 django 中的日期时间中分离 HH 和 MM

javascript - Node.js crypto.pbkdf2Sync 密码与 python 脚本不匹配

xml - hibernate 使用注解或者使用 hibernate 配置文件

java - 通过另一个实体进行 Hibernate 映射

mysql - 注释 Django 1.8 中复杂子查询的结果到 QuerySet