首页 > 解决方案 > 使用 Django ORM 计算扩展价格

问题描述

原始 SQL 将使用计算字段执行数学计算,例如:

item_price 列包含订单中每个项目的单价。要扩大商品价格(商品价格乘以订购数量),可以执行以下操作:

MySQL [distributor]> select prod_id, 
    -> quantity,
    -> item_price,
    -> quantity*item_price as expanded_price
    -> from orderitems
    -> where order_num = 20008;
+---------+----------+------------+----------------+
| prod_id | quantity | item_price | expanded_price |
+---------+----------+------------+----------------+
| RGAN01  |        5 |       4.99 |          24.95 |
| BR03    |        5 |      11.99 |          59.95 |
| BNBG01  |       10 |       3.49 |          34.90 |
| BNBG02  |       10 |       3.49 |          34.90 |
| BNBG03  |       10 |       3.49 |          34.90 |
+---------+----------+------------+----------------+
5 rows in set (0.027 sec)

我怎么能用 Django ORM 做到这一点?

标签: django

解决方案


Django 提供annotate()了注释结果的方法。

from django.db.models import F

result = orderitems.objects.filter(order_num=20008).annotate(
    expanded_price=F('quantity') * F('item_price')
)

推荐阅读