0

私は次のモデルを持っています

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

しかし、ジャンゴは別のものに注釈を付けることができないようです。

4

2 に答える 2