【问题标题】:Query set of number of related objects查询相关对象个数的集合
【发布时间】:2012-03-21 14:13:49
【问题描述】:

我有模型 A 和模型 B 的 fk

现在我需要创建一个查询集来获取所有 B 与少于 5 个 A 的链接。

编辑也许我应该提到这是一个 Django 项目,我正在寻找的是一个查询集引用,它的效率足以运行很多次

我尝试过类似的方法:

B.objects.select_related()

但我不明白如何将此 qs 限制为仅包含最多出现 5 次的 B

【问题讨论】:

  • 好的,祝你好运(即你尝试了什么?有什么问题?你的代码在哪里?)
  • 你是对的,在发布后一分钟内不小心点击了确认不错 -1,现在编辑它很遗憾无法提供任何实际源代码
  • @nopogo:花点时间阅读codinghorror.com/blog/2012/03/rubber-duck-problem-solving.html。不要急于问问题。花时间彻底评估您想要实现的目标、您尝试过的内容等,并在发布之前重新阅读您的问题。如果你这样做了,你就不会投反对票。
  • @ChrisPratt 感谢您的提醒和链接,从现在开始将尝试该方法

标签: python django object django-queryset


【解决方案1】:

使用注释:

from django.db.models import Count

B.objects.annotate(a_count=Count('a')).filter(a_count__lt=5)

见:https://docs.djangoproject.com/en/dev/topics/db/aggregation/

【讨论】:

    【解决方案2】:

    你的问题不是很清楚,但我是怎么理解的,我认为你需要的代码是这些:

    from django.db.models import Count
    b_qs = B.objects.annotate(num_a=Count('authors')).filter(num_a__lt=5) 
    

    【讨论】:

      猜你喜欢
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-11
      • 1970-01-01
      相关资源
      最近更新 更多