我正在使用 Django 过滤器来为我的项目做一些过滤。我有以下模型:
class Foo(models.Model):
pass
class Bar(models.Model):
foo = models.ForeignKey(Foo, models.CASCADE)
我的查询是这样的:
Foo.objects.filter(blah=blah)
我想通过仅提供至少有 5 个通过 FK 连接的 Bar 对象的 Foo 对象来缩小此过滤器。
因此,如果我有 3 个 Foo 对象,它们分别有 7、5 和 3 个 Bar 对象,它们都有自己的 id,那么只有前两个应该在最后的查询集中。我该怎么做才能使评估的查询集在内存中只有前两个对象?
谢谢!
最佳答案
您可以注释 Bar
对象的数量,然后对这些对象进行过滤:
from django.db.models import Count
Foo.objects.annotate(
<b>nbar=Count('bar')</b>
).filter(
blah=blah,
<b>nbar__gte=5</b>
)
关于python - 基于 child 数量的Django查询集过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62684947/