You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django ORM如何计算每行列值乘对应汇率后整列的总和

正确实现方案

你原来的写法错误原因是先对全量字段求和再乘汇率,但不同用户所属国家的汇率不同,需要先对单条用户记录的收入、支出乘以对应汇率,再做汇总求和。

实现步骤

  1. 先导入Django ORM所需的工具类:
from django.db.models import Sum, F
  1. 执行聚合查询:
result = User.objects.filter(group=1).aggregate(
    total_income=Sum(F('income') * F('country__currency__value')),
    total_expenditure=Sum(F('expenditure') * F('country__currency__value'))
)

结果获取

查询返回的result是字典类型,可直接读取汇总结果:

# 输出示例
print(f"income: {result['total_income']}")
print(f"expenditure: {result['total_expenditure']}")

逻辑说明

  • 用F('country__currency__value')跨外键关联拿到对应用户所属国家的货币汇率
  • 单条记录先完成本币转美元的乘法计算,再通过Sum做全局汇总,完全匹配你给出的计算逻辑,用示例数据测试可得到income:18、expenditure:37的预期结果。

内容的提问来源于stack exchange,提问作者Monty Swanson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 22:54:00