我的模型A带有fk模型B
现在我需要创建一个查询集,使得所有B的链接都少于5个。
编辑也许我应该提到这是一个Django项目,我正在寻找的是一个有效的,足以运行很多次的Queryset引用
我尝试过类似的事情:
B.objects.select_related()
但我不明白如何限制此qs仅包括最多5次出现的B
答案 0 :(得分:2)
使用注释:
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/
答案 1 :(得分:0)
您的问题不是很清楚,但我理解的是我认为您需要的代码就是这些代码:
from django.db.models import Count
b_qs = B.objects.annotate(num_a=Count('authors')).filter(num_a__lt=5)