繁体   English   中英

在Django中连接多对多表

[英]Join Many to Many tables in Django

我有三个模型,与多对多关系相关

型号A-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

任何帮助将非常感激!

鉴于:

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中验证

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM