我有以下型號嵌套聚合函數在Django
class Domain(models.Model):
domain = models.URLField()
web_analytics = models.ManyToManyField('AnalyticsProvider', blank=True)
class AnalyticsProvider(models.Model):
name = models.CharField(max_length=50)
我想每個域分析的數量,他們通過分析數它們聚集。我想得到這樣的結果: { 「1和分析服務提供商」: 「520個域名」, 「2次的分析服務提供商」: 「130個域名」, ...}
。我管理與SQL查詢來做到這一點,但我想用Django的ORM,SQL查詢如下:
SELECT COUNT(1),"num_m2m" from (SELECT "dashboard_domain"."id_website", COUNT("dashboard_domain_web_analytics"."analyticsprovider_id") AS "num_m2m"
FROM "dashboard_domain" LEFT OUTER JOIN "dashboard_domain_web_analytics"
ON ("dashboard_domain"."id_website" = "dashboard_domain_web_analytics"."domain_id")
GROUP BY "dashboard_domain"."id_website") GROUP BY "num_m2m";
我試圖做一個雙註釋中,如查詢集:
number_web_analytics = Domain.objects.annotate(num_m2m=Count('web_analytics')).annotate(count_domains=Count('num_m2m'))
但似乎django不能做另一個註釋。
對不起,我可能沒有解釋清楚。這就是我所擁有的,現在我想按分析數量對域進行分組。 – fasouto 2013-04-27 09:41:22