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

使用annotate+Sum聚合外键Decimal字段返回整数而非小数的问题

解决Django annotate+Sum聚合Decimal字段返回整数的问题
  • 问题核心:Django的Sum聚合器在关联查询Decimal类型字段时,默认可能输出整数类型,需手动指定输出字段类型来保留小数格式
  • 解决方案:给Sum添加output_field参数,明确指定为DecimalField
  • 修改后的示例代码:
from django.db.models import Sum, DecimalField

# 替换为你的实际模型类名
YourModel.objects.filter(SourceDeletedFlat=False).annotate(
    TotalAmount=Sum(
        "RequestOrderList__PurchaseOrderAmount",
        output_field=DecimalField(max_digits=10, decimal_places=2)
    )
).all()
  • 注意事项:根据PurchaseOrderAmount字段实际定义的max_digits和decimal_places调整参数值,确保与原字段配置一致,聚合结果就能保持Decimal类型。

内容的提问来源于stack exchange,提问作者Raza Ullah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 22:50:23