Python 复杂注释&;聚合查询

Python 复杂注释&;聚合查询,python,sql,django,Python,Sql,Django,我有一个OrderItem对象的查询集。它们的形式如下: OrderItem - ID - BillingParty - Rate 我想按QuerySet聚合/分组,这样它就可以按最高的组合速率排序,并注释速率和计数。这是一个例子 一, 至高无上的 五百 二, WB 三百 三, 至高无上的 四百 由此,我希望能够: [ {'BillingParty': 'Paramount', 'TotalRate': 900, 'ItemCount': 2}, {'Bill

我有一个OrderItem对象的查询集。它们的形式如下:

OrderItem
- ID
- BillingParty
- Rate
我想按QuerySet聚合/分组,这样它就可以按最高的组合速率排序,并注释速率和计数。这是一个例子

  • 一,
  • 至高无上的
  • 五百

  • 二,
  • WB
  • 三百

  • 三,
  • 至高无上的
  • 四百

由此,我希望能够:

[
    {'BillingParty': 'Paramount', 'TotalRate': 900, 'ItemCount': 2},
    {'BillingParty': 'WB', 'TotalRate': 300, 'ItemCount': 1},
]
我该怎么做?我在想可能是这样的:

order_items.aggregate('billing_party')
           .annotate(ItemCount=Count('id'), TotalRate=Sum('rate')
或者,对于django来说太复杂了吗?我需要在这里做一个python for循环来添加内容。

[p>[update]

我想说的是,你的问题似乎是个骗局:明白吗

所以最后这不是很复杂

当您开始意识到Django中的ORM层被优化为易于使用而不是灵活性时,您就有了一个非常复杂的查询,您必须求助于原始SQL来执行一些复杂的查询

当我感到懒惰时,我只使用,不使用时,我加入一些混合-这种ORM几乎1:1映射到原始SQL,但与使用字符串组合的原始SQL相比,更易于重用/重构


当我需要从服务器中提取每一点性能时,我只要求DBA使用我需要的结果创建一个视图,并使用
Meta.db\u table='view\u name'
(使用任何唯一的列作为索引,或使用一个伪索引,如随机uuid4)。

这实际上比我想象的要简单一些。通过执行
.values()
然后执行
.annotate
(),我可以按进行分组

order_items = order_items.values('billing_party')
               .annotate(total_rate=Sum('rate'), count=Count('id'))
               .order_by('-total_rate')
以下是有关执行
.values()
然后执行
annotate()
以处理上述问题的文档: