【发布时间】:2013-08-23 17:57:00
【问题描述】:
class ModelA(models.Model):
model_b = models.ManyToManyField('models.ModelB')
class ModelB(models.Model):
some_bool = models.BooleanField(default=False)
鉴于这两个模型,假设我有两个与 ModelA 实例相关的 ModelB 实例...
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 实例,并完全以此为基础)。
【问题讨论】:
-
让实际问题更清晰。
标签: django filter many-to-many django-queryset