Django-筛选多对多只检查第一条记录

Django-筛选多对多只检查第一条记录,django,filter,many-to-many,django-queryset,Django,Filter,Many To Many,Django Queryset,给定这两个模型,假设我有两个与ModelA实例相关的ModelB实例 class ModelA(models.Model): model_b = models.ManyToManyField('models.ModelB') class ModelB(models.Model): some_bool = models.BooleanField(default=False) 我现在想做一个类似于以下内容的查询: mod_a = ModelA() mod_a.save() mo

给定这两个模型,假设我有两个与ModelA实例相关的ModelB实例

class ModelA(models.Model):
    model_b = models.ManyToManyField('models.ModelB')

class ModelB(models.Model):
    some_bool = models.BooleanField(default=False)
我现在想做一个类似于以下内容的查询:

mod_a = ModelA()
mod_a.save()

mod_b1 = ModelB(some_bool=True)
mod_b1.save()

mod_b2 = ModelB(some_bool=False)
mod_b2.save()

mod_a.model_b.add(mod_b1, mod_b2)
除非它迭代ModelA实例的所有相关ModelB实例,并且如果任何ModelB实例的某个字段设置为True,则排除该实例。我知道这将需要一个更复杂的查询(我所展示的查询只会检查它遇到的ModelB的第一个实例,并且完全基于此)

这是:

我所展示的方法只会检查它遇到的ModelB的第一个实例,并且完全基于这个实例


事实并非如此。您显示的查询将完全满足您的要求:排除所有模型,就像任何相关模型都有一些\u bool=True一样。

让实际问题更清楚。好吧,我显然在某个地方遇到了一些意外行为!谢谢
queryset = ModelA.objects.exclude(model_b__some_bool=True)