我有两个模型:
ModelA:
id = models.AutoField(primary_key=True)
ModelB:
id = models.AutoField(primary_key=True)
titlecomponent = models.ForeignKey('ModelA',on_delete=models.PROTECT)
如何获取 ModelA 的所有对象,这些对象在 ModelB 中没有任何记录关系。
我有两个模型:
ModelA:
id = models.AutoField(primary_key=True)
ModelB:
id = models.AutoField(primary_key=True)
titlecomponent = models.ForeignKey('ModelA',on_delete=models.PROTECT)
如何获取 ModelA 的所有对象,这些对象在 ModelB 中没有任何记录关系。
您可以通过比较来做到这一点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