1

有谁知道我将如何通过 django ORM 生成一个有条件地聚合相关模型的查询?

例如,假设您经营一个销售商品的网站,并且您想知道过去 7 天内每位员工的销售额。在所有销售中执行此操作很简单:

q = Employee.objects.filter(type='salesman').annotate(total_sales = models.Sum('sale__total'))

假设 Employee 和 Sale 模型之间存在多对多关系。好的,但是现在我将如何将其限制为过去 7 天(或任何任意时间范围)的所有销售?有人知道吗?

4

1 回答 1

2

好吧,我想我没想到这么远。我没有意识到过滤器使用左连接处理事情(虽然考虑了一下,它会如何映射到数据库?),所以显而易见的答案是:

Employee.objects.filter(type='salesman').filter(sale__timestamp__gte = start_date)\
        .exclude(sale__timestamp__gte = end_date).annotate(...
于 2009-06-09T20:08:05.097 回答