计算一个查询中用户点击的电子邮件活动的数量

问题描述 投票:0回答:1

我打算做的是这样的:

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.

一个订阅者可以为一个广告系列获得多次点击,而一个广告系列可以为多个订阅者提供点击。在点击订阅者中,我想知道每个订阅者点击了多少个广告系列。

是否有一种解决方法可在一个查询中获得此结果?

django django-models group-by distinct django-orm
1个回答
0
投票

找出了一种方法。由于注释和不同不能在同一查询中链接,因此我将其中一个用作另一个的子查询,如下所示:

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')

© www.soinside.com 2019 - 2024. All rights reserved.