【发布时间】:2021-07-19 23:05:25
【问题描述】:
假设我有这样的模型:
class Bar(Model):
value = IntegerField()
class Foo(Model):
bars = ManyToManyField(Bar)
现在,我如何获取 Foo 对象的查询集,不包括那些具有 bars 对象且值为 0 的对象?
对应的 Python 代码如下:
foos_ids_to_exclude = []
for foo in Foo.objects.all():
for bar in foo.bars.all():
if bar.value == 0:
foos_ids_to_exclude.append(foo.id)
break
resulting_queryset = Foo.objects.exclude(id__in=foos_ids_to_exclude)
但是我如何在 DjangoORM 级别上做到这一点?甚至有可能吗?
如果可能,我想在不评估查询集的情况下执行此操作。
【问题讨论】:
标签: django django-orm