class ModelA(models.Model):
model_b = models.ManyToManyField('models.ModelB')
class ModelB(models.Model):
some_bool = models.BooleanField(default=False)
これら 2 つのモデルが与えられた場合、ModelA のインスタンスに関連する ModelB のインスタンスが 2 つあるとします...
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)
次のようなクエリを実行したいと思います。
queryset = ModelA.objects.exclude(model_b__some_bool=True)
ただし、ModelA インスタンスの関連するすべての ModelB インスタンスを繰り返し処理し、ModelB インスタンスのsome_bool
フィールドのいずれかが True に設定されている場合はそのインスタンスを除外します。これにはより複雑なクエリが必要になることは承知しています (私が示したものは、遭遇した ModelB の最初のインスタンスのみをチェックし、完全にそれに基づいています)。