acw*_*acw 4 python django django-orm django-filter
我正在使用 Django 过滤器来为我的项目进行一些过滤。我有以下型号:
class Foo(models.Model):
pass
class Bar(models.Model):
foo = models.ForeignKey(Foo, models.CASCADE)
Run Code Online (Sandbox Code Playgroud)
我的查询如下所示:
Foo.objects.filter(blah=blah)
Run Code Online (Sandbox Code Playgroud)
我想通过仅提供至少有 5 个通过 FK 连接的 Bar 对象的 Foo 对象来缩小此过滤器的范围。
因此,如果我有 3 个 Foo 对象,它们分别有 7、5 和 3 个具有 id 的 Bar 对象,那么只有前两个应该在最终查询集中。我该如何做到这一点,以便评估的查询集在内存中只包含前两个对象?
谢谢!
您可以注释对象的数量Bar,然后对这些对象进行过滤:
from django.db.models import Count
Foo.objects.annotate(
nbar=Count('bar')
).filter(
blah=blah,
nbar__gte=5
)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
590 次 |
| 最近记录: |