Postgresql を介して Django で複雑なクエリを実行しようとしています。
これらは私のモデルです:
class Link(models.Model):
short_key = models.CharField(primary_key=True, max_length=8, unique=True, blank=True)
long_url = models.CharField(max_length=150)
class Stats_links_ads(models.Model):
link_id = models.ForeignKey(Link, related_name='link_viewed', primary_key=True)
ad_id = models.ForeignKey(Ad, related_name='ad_viewed')
views = models.PositiveIntegerField()
clicks = models.PositiveIntegerField()
Django ORM を使用して、次のように変換されるクエリを実行したいと考えています。
select a.link_id, sum(a.clicks), sum (a.views), (select long_url from links_link b where b.short_key = a.link_id_id)
from links_stats_links_ads a
group by a.link_id_id;
必要なフィールドを除外すると、long_url
このコードを実行でき、機能します。
Stats_links_Ads.objects.all().values('link_id').annotate(Sum('views'), Sum('clicks'))
select ステートメントにサブクエリを追加する方法がわかりません。
ありがとう