Django Model 中如何求两列乘积之和呢?

2015-12-11 11:19:50 +08:00
 tinypig
```python
Class A(models.Model)
a = models.Decimal()
b = models.Decimal()
```

如何求 Sum ( a * b)呢,
尝试 A.objects.aggregate(Sum('a * b')) 不允许这样用似乎
3899 次点击
所在节点    Python
5 条回复
Wien
2015-12-11 12:03:26 +08:00
A.objects.all().aggregate(ab_sum=Sum(F('a') * F('b'), output_field=FloatField()))
遇事不决看文档:) https://docs.djangoproject.com/en/1.8/topics/db/aggregation/
tinypig
2015-12-11 12:25:37 +08:00
@Wien 感谢,看来还是对文档理解不太好,之前过 Aggregation 相关的内容,但是没发现这个用法。
顺便问一下,如果想加入判断的话,应该怎么才做呢。
比如 if b>50, b =50, Sum(a*b)
yuankui
2015-12-11 14:58:47 +08:00
这就是 ORM 不方便的地方吧..
Wien
2015-12-11 17:22:17 +08:00
@tinypig A.objects.filter(a__gt=50,b=50).aggregate(ab_sum=Sum(F('a') * F('b'), output_field=FloatField()))
先 filter 一下条件即可, filter 后还是一个 QuerySet
est
2015-12-11 17:24:54 +08:00
@yuankui 主要原因还是 django 的 ORM 表达能力弱。。。 ponyorm 或者 linq 写起来就 666666666666 得一比。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/242765

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX