2015-11-03 63 views
1

我使用django,并且我有模型名称TagsDjango计算其他模型中的一个模型的所有发生

它被用于15个不同的模型accros我的整个应用ManyToManyField。

我需要得到所有特定标签发生的len/count

我是怎么这样做的?我必须使用Aggregate/annotate吗?选择相关?或者完全不同的东西。当然,使用forloops不是一个选择。

+0

为什么for循环不是一种选择?它看起来像你可以简单地做15计数查询。你的数据库是什么? – freakish

+0

我的数据库是Postgres。我有聚合,但我认为不符合我的需要。因为我的网站已经有很多条目,并且为了现在和未来做很多查询都很糟糕。我尝试了forloop,但它是减速的方式。 – sebb

+1

@SebastianBurzyński那么,你在逻辑上对多个表进行多个计数查询。我没有看到真正的优化空间(即恕我直言,任何查询将有类似的执行时间),除了适当的索引(但我认为你已经这样做了)。除非数据不一定是实时的。然后,您可以定期对其进行聚合并将其存储在单独的表中(例如,如果您使用的是PostgreSQL版本,则为物化视图)。 – freakish

回答

相关问题