我有一个模型与FK以B型查询组相关对象的数量
现在我需要做一个查询集是得到所有B的具有小于5 A的链接到他们。
编辑也许我应该提到这是一个Django项目和我正在寻找的是一个QuerySet参考这就是效率不够高,运行相当多的时间
我已经试过类似:
B.objects.select_related()
,但我不知道如何来限制这种QS到只包括B的,最大出现5次
我有一个模型与FK以B型查询组相关对象的数量
现在我需要做一个查询集是得到所有B的具有小于5 A的链接到他们。
编辑也许我应该提到这是一个Django项目和我正在寻找的是一个QuerySet参考这就是效率不够高,运行相当多的时间
我已经试过类似:
B.objects.select_related()
,但我不知道如何来限制这种QS到只包括B的,最大出现5次
使用注释:
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/
感谢一堆,像魅力一样工作! – nopogo 2012-03-21 14:40:24
你的问题是不是很清楚,但我如何理解它,我认为你需要的代码是其中之一:
from django.db.models import Count
b_qs = B.objects.annotate(num_a=Count('authors')).filter(num_a__lt=5)
好吧,祝你好运(即你有什么尝试?有什么问题?你的代码在哪里?) – 2012-03-21 14:16:17
你是对的,点击确认意外好-1在发布一分钟内,现在编辑它可悲不能提出任何实际的源代码 – nopogo 2012-03-21 14:32:21
@nopogo:花一点时间阅读http:// www .codinghorror.com /博客/ 2012/03 /橡胶鸭问题solving.html。不要急于提出问题。花点时间彻底评估你想要达到的目标,尝试过的等等,并在发布之前重新阅读你的问题。如果你这样做了,你不会有一个倒退。 – 2012-03-21 14:44:47