在Django中加入Many to Many表

时间:2017-11-24 02:10:29

标签: sql django django-models orm

我有三个模型,连接多对多关系

ModelA - M:N - 模型B - M:N - 模型C

它们被定义为

ModelA
attA1
attA2

ModelB
attB1
att1s.ManyToManyField(ModelA)
att3s.ManyToManyField(ModelC)

ModelC
attC1
attC2

我想在服务器启动时将这三个数据存储起来,而无需再次查询数据库 - 但我需要每个表中的所有数据。

我正在寻找的等价SQL是:

SELECT *
FROM ModelA, ModelB, ModelC
WHERE ModelA.pkA = ModelB.pkA AND ModelC.pkC=ModelB.pkC

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

假设:

class ModelA(models.Model):
    a = models.CharField(max_length=15)

class ModelC(models.Model):
    c = models.CharField(max_length=15)

class ModelB(models.Model):
    b = models.CharField(max_length=15)
    modela = models.ManyToManyField(ModelA)
    modelc = models.ManyToManyField(ModelC)

您可以通过循环遍历ModelB并拉入a和c来列出所有关系:

ModelB.objects.values('modela__a', 'b', 'modelc__c')

在Django shell中验证