django - 使用 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 提供annotate()
了注释结果的方法。
from django.db.models import F
result = orderitems.objects.filter(order_num=20008).annotate(
expanded_price=F('quantity') * F('item_price')
)
推荐阅读
- sql - 如何确定不在 DBA_TAB_PRIVS 表中的用户的表权限?
- mysql - 我可以将多个 MySQL 行组连接到一个字段中吗?
- python - 如何通过创建自己的函数来比较两个变量?
- version-control - 确定用于在 perforce 中提交新更改的更改列表
- mql - 如何在 MQL5 中获取图表上的线坐标?
- db2 - 发生连接授权失败。原因:GSSAPI 服务器凭据无效。错误代码=-4214,SQLSTATE=28000
- javascript - 如何分配或获取工作空间的父文件夹路径和工作空间文件夹的父文件夹名称
- sqlite - 在 Firedac Sqlite 数据库连接上插入后如何进行事件?
- php - 我想通过分页每页显示一篇文章。但是分页按钮不起作用
- c - 如何在 VxWorks 中为特定套接字 fd(非系统范围)设置 TCP 保持活动间隔?