【问题标题】:Join Many to Many tables in Django在 Django 中加入多对多表
【发布时间】:2017-11-24 02:10:29
【问题描述】:

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

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

任何帮助将不胜感激!

【问题讨论】:

    标签: sql django django-models orm


    【解决方案1】:

    给定:

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

    【讨论】:

      猜你喜欢
      • 2020-08-04
      • 1970-01-01
      • 2011-02-24
      • 2012-09-16
      • 1970-01-01
      • 2016-08-22
      • 2019-04-22
      • 2011-06-06
      相关资源
      最近更新 更多