Python Django统计一个模型在许多其他模型中发生的所有事件
我使用的是django,我有模型名Python Django统计一个模型在许多其他模型中发生的所有事件,python,django,manytomanyfield,Python,Django,Manytomanyfield,我使用的是django,我有模型名标签 它用于15种不同型号的accros,我的整个应用程序为ManyToManyField 我需要获取特定标签的所有事件的len/计数 我该怎么做呢?我必须使用聚合/注释吗?选择相关的?或者完全不同的东西。当然,使用forloops并不是一种观点。如果您希望能够在一个请求中查询有多少项与标记相关(如果它们是不同的Django模型),那么您应该使用Django提供的contenttypes框架,而不是将标记定义为多个字段 文档中的示例正是您想要的 如果您希望能够
标签
它用于15种不同型号的accros,我的整个应用程序为ManyToManyField
我需要获取特定标签的所有事件的len
/计数
我该怎么做呢?我必须使用聚合/注释吗?选择相关的?或者完全不同的东西。当然,使用forloops并不是一种观点。如果您希望能够在一个请求中查询有多少项与标记相关(如果它们是不同的Django模型),那么您应该使用Django提供的contenttypes框架,而不是将标记定义为多个字段
文档中的示例正是您想要的
如果您希望能够在一个请求中查询有多少项与不同Django模型的标记相关,则应使用Django提供的contenttypes框架,而不是将标记定义为多个字段
文档中的示例正是您想要的
为什么不选择for循环?在我看来,你可以简单地进行15次计数查询。你的数据库是什么?我的数据库是Postgres。我已经三年了,但我认为这不符合我的需要。因为我的网站已经有很多条目了,而且无论是现在还是将来,做很多查询都是不好的。我尝试了forloop,但这是一种减慢速度的方法。@SebastianBurzyński嗯,您在逻辑上对多个表执行多个计数查询。除了适当的索引之外,我看不到真正的优化空间(即任何查询都有类似的执行时间)(但我假设您已经这样做了)。除非数据不必是实时的。然后你可以定期聚合它并将其存储在一个单独的表中(例如,如果你使用的是PostgreSQL版本的东西,则为物化视图)。@奇怪的是,我在想,我可以写一个芹菜任务,每天晚上检查一次发生的情况。但这真的是一个好办法吗?我想这比每天都打DB要好request@SebastianBurzy是的,这是一个正确的方法。如果您真的有这么多数据,那么您应该这样做。为什么for循环不是一个选项?在我看来,你可以简单地进行15次计数查询。你的数据库是什么?我的数据库是Postgres。我已经三年了,但我认为这不符合我的需要。因为我的网站已经有很多条目了,而且无论是现在还是将来,做很多查询都是不好的。我尝试了forloop,但这是一种减慢速度的方法。@SebastianBurzyński嗯,您在逻辑上对多个表执行多个计数查询。除了适当的索引之外,我看不到真正的优化空间(即任何查询都有类似的执行时间)(但我假设您已经这样做了)。除非数据不必是实时的。然后你可以定期聚合它并将其存储在一个单独的表中(例如,如果你使用的是PostgreSQL版本的东西,则为物化视图)。@奇怪的是,我在想,我可以写一个芹菜任务,每天晚上检查一次发生的情况。但这真的是一个好办法吗?我想这比每天都打DB要好request@SebastianBurzy是的,这是一个正确的方法。如果你真的有这么多的数据,那么你应该这样做。