如何在Django中向聚合查询添加日期过滤器

时间:2012-03-08 18:51:09

标签: python django django-views

我目前正在进行聚合查询,该查询将所有跟踪ID分组并生成其计数。我希望能够按日期过滤此查询。

我的工作查询:

users = Tracking.objects.values( 'tracking_id' ).annotate(dcount=Count('tracking_id')).order_by('-dcount')[:100]

我尝试过以下过滤器组合,但都会导致语法错误。

start_date = datetime.date(2012, 2, 1)
end_date = datetime.date(2012, 3, 2)
users = Tracking.objects.filter(date__range=(start_date, end_date).values( 'tracking_id' ).annotate(dcount=Count('tracking_id')).order_by('-dcount')[:100]

start_date = datetime.date(2012, 2, 1)
end_date = datetime.date(2012, 3, 2)
users = Tracking.objects.values( 'tracking_id' ).filter(date__range=(start_date, end_date).annotate(dcount=Count('tracking_id')).order_by('-dcount')[:100]

start_date = datetime.date(2012, 2, 1)
end_date = datetime.date(2012, 3, 2)
users = Tracking.objects.values( 'tracking_id' ).annotate(dcount=Count('tracking_id')).filter(date__range=(start_date, end_date).order_by('-dcount')[:100]

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我认为它们会导致语法错误,因为缺少括号(在end_date之后):

users = Tracking.objects.values( 'tracking_id' ).filter(date__range=(start_date, end_date) ...

应该是

users = Tracking.objects.values( 'tracking_id' ).filter(date__range=(start_date, end_date)) ...