python – 目标的Django聚合
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 目标的Django聚合,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1282字,纯文字阅读大概需要2分钟。
内容图文
![python – 目标的Django聚合](/upload/InfoBanner/zyjiaocheng/724/658d0f986ea643279dee7d4a2f7a06fe.jpg)
我在商店里保存每件商品.我希望使用聚合来汇总每个商店一个月内的所有销售额.我想过滤达到目标的商店(100.000 $).
我已经想出了一个使用python和列表的解决方案.但我想知道是否有更好的解决方案只使用ORM.
Sales model
Store Sale Date
Store A 5.000 11/01/2014
Store A 3.000 11/01/2014
Store B 1.000 15/01/2014
Store C 8.000 17/01/2014
...
结果应该是这样的:
Month: January
Store Amount
A 120.000
B 111.000
C 150.000
and discard
D 70.000
谢谢你的帮助.
解决方法:
其他建议的方法会丢弃大量需要几分之一秒加载的数据,这在以后的代码中可能会有用.因此这个答案.
您可以在Store对象上查询,而不是查询Sales对象.除了关系之外,查询大致相同:
from django.db.models import Sum
stores = Store.objects.filter(sales__date__month=month, sales__date__year=year) .annotate(montly_sales=Sum('sales__amount')) .filter(montly_sales__gte=100000) # optionally prefetch all `sales` objects if you know you need them
.prefetch_related('sales')
>>> [s for s in stores]
[
<Store object 1>,
<Store object 2>,
etc.
]
所有Store对象都有一个额外的属性montly_sales,该属性具有该特定月份的总销售额.通过在注释之前过滤月份和年份,注释仅使用过滤的相关对象.请注意,商店中的sales属性仍包含该商店的所有销售额.
使用此方法时,可以轻松访问所有商店属性,这与使用.values对结果进行分组时不同.
内容总结
以上是互联网集市为您收集整理的python – 目标的Django聚合全部内容,希望文章能够帮你解决python – 目标的Django聚合所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。