2009-06-09 82 views
1

有谁知道我会通过django ORM生成一个有条件地聚合相关模型的查询吗?Django条件汇总

比方说,例如,您运行一个销售东西的网站,并且您想知道每个员工在过去七天内销售了多少。在所有销售中这样做很简单:

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

假设员工和销售模式之间存在多对多关系。好的,但是现在我怎么去约束这七天所有销售额(或任意时间范围)呢?有人知道吗?

+0

你是询问SELECT SUM(SALES )GROUP BY员工查询? – 2009-06-09 18:49:29

回答

2

好吧,我想我没有想到通过很远。我不知道该过滤器处理的事情有左连接(虽然思考它,这是怎么回事会映射到数据库?),所以答案显然是:

Employee.objects.filter(type='salesman').filter(sale__timestamp__gte = start_date)\ 
     .exclude(sale__timestamp__gte = end_date).annotate(...