【问题标题】:Django - Get counts of objects in related setsDjango - 获取相关集中的对象计数
【发布时间】:2019-07-12 23:03:19
【问题描述】:

有两种型号:

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

class Location(...):
    ...

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

例如:

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

结果是:

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

我以这个结尾:

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

一两个Queries可以做到吗?我想避免使用循环。

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

【问题讨论】:

    标签: python django postgresql django-orm


    【解决方案1】:

    试试这个

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

    在模板中

    {{obj.locations_count}}
    

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

    希望对你有帮助

    【讨论】:

    • 谢谢,我编辑了答案,related_name 是文章。你有一个想法如何让它在文章的子集上工作?
    • 而且我认为您的外部 Count() 没有意义,如果我理解正确,应该只有 Count('locations') 。
    猜你喜欢
    • 2021-07-10
    • 2012-02-20
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 2011-07-23
    • 2016-09-05
    • 1970-01-01
    • 2013-08-18
    相关资源
    最近更新 更多