Django - 获取相关集合中的对象计数

Django - Get counts of objects in related sets

有两种型号:

class Article(..:
    locations = ManyToMany('Location'...,related_name='articles')

class Location(...):
    ...

我正在寻找一种方法来获取任何位置出现的次数 related_set Article.locations

例如:

  1. 第 1 条 - 米兰、维也纳、巴黎
  2. 第 2 条 - 米兰、巴黎
  3. 第 3 条 - 巴黎
  4. 文章 - 迪拜

结果将是:

巴黎 - 3、米兰 - 2、维也纳 - 1、迪拜 -1

我这样结束:

Location.objects.all().annotate(Count(?))

是否可以一两次Queries完成?我想避免使用循环。

此外,我只想考虑 Articles 的子集(过滤查询集)。

试试这个

Location.objects.all().annotate(
    locations_count=Count('locations')
  )

并在模板中

{{obj.locations_count}}

ax = Location.objects.all().count()
 {{ax}}

希望对您有所帮助