0

假设我有一个聚合来显示每个销售代表创建的订单总数:

orders.values('sales_rep__username', 'sales_rep__email').annotate(Count('sales_rep'))

那么我该如何只选择创建了 100 多个订单的销售代表呢?鉴于订单表有太多记录无法遍历代码。

注意:我只能考虑编写自己的自定义 SQL 语句,我的一个同事想出了一个 hack 使用 extra() 方法来注入自定义 where 子查询,但它没有针对 sql 执行计划进行优化。

4

1 回答 1

1

命名带注释的值并在过滤器中使用它。

orders.values('sales_rep__username', 'sales_rep__email').annotate(order_count=Count('sales_rep')).filter(order_count__gt=100)
于 2012-07-25T23:28:50.393 回答