我目前正在进行聚合查询,该查询将所有跟踪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]
非常感谢任何帮助。
答案 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)) ...