我打算做的是这样的:
Clicks.objects.filter(campaign_id__in=[1,2,3]).distinct('campaign', 'subscriber').annotate(campaigns_clicked=Count('subscriber'))
但是django返回错误:NotImplementedError: annotate() + distinct(fields) is not implemented.
一个订阅者可以为一个广告系列获得多次点击,而一个广告系列可以为多个订阅者提供点击。在点击订阅者中,我想知道每个订阅者点击了多少个广告系列。
是否有一种解决方法可在一个查询中获得此结果?
找出了一种方法。由于注释和不同不能在同一查询中链接,因此我将其中一个用作另一个的子查询,如下所示:
Clicks.objects.filter(id__in=Clicks.objects.filter(campaign_id__in=[1,2,3]).distinct('campaign', 'subscriber').values_list('id', flat=True)).values_list('subscriber').annotate(campaigns_clicked=Count('subscriber')