试图在 Django 中通过 Postgresql 运行复杂的查询。
这些是我的模型:
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 语句中添加子查询。
谢谢