Django通过多个模型进行双重连接

问题描述

| 情况 我有3个模型。模型A,模型B和模型C。
class A(Model):
    B_id = ForeignKey(B)
    id = IntegerField()
    pub_date = DateField()

class B(Model):
    id = IntegerField(primary_key = True)

class C(Model):
    B_id = ForeignKey(B)
    pub_date = DateField()
    @R_220_4045@ion = TextField()
模型A和模型C都有一个名为
B_id
的字段,这是模型B的外键。因此,从B到A或C没有直接连接。 目标 我从模型A获得了一个ID。现在,我需要来自C的所有信息,其中pub_date与A中的pub_date匹配,而B_id与A中的B_id匹配。 在sql中,这将是一个非常简单的查询
SELECT C.@R_220_4045@ion FROM A JOIN C USING(B_id,pub_date) WHERE A.id = 1234;
但是我根本无法弄清楚该如何使用Django ORM语法执行此操作,因为只有从C到A的直接连接路径,“ 3”子句才有效。 - 编辑:请注意,A中有多个匹配一个ID的行。     

解决方法

编辑: 尝试这个:
 A.objects.filter(B_id__c__pub_date=F(\'pub_date\'))
我不确定过滤字符串的大小写,但您不确定要使用
F()
谓词。参见文档。