1

我有两个模型:

ModelA:
id = models.AutoField(primary_key=True)

ModelB:
id = models.AutoField(primary_key=True)
titlecomponent = models.ForeignKey('ModelA',on_delete=models.PROTECT)

如何获取 ModelA 的所有对象,这些对象在 ModelB 中没有任何记录关系。

4

1 回答 1

1

您可以通过比较来做到这一点None

ModelA.objects.filter(modelb=None)

这样做的原因是因为LEFT OUTER JOIN执行了 a,因此如果不ModelB存在相关,则添加包含NULLs 的行。

因此,这将归结为如下查询:

SELECT app_modela.*
FROM app_modela
LEFT OUTER JOIN app_modelb ON app_modelb.titlecomponent = app.modela.id
WHERE app_modelb.id IS NULL
于 2019-10-23T14:27:56.683 回答