如何解决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()
information = 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.information 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()
谓词。参见文档。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。