问题描述
|
情况
我有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()
谓词。参见文档。