使用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
相关产品推荐
相关产品推荐

