【发布时间】:2011-05-26 14:33:29
【问题描述】:
情况
我有 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 语法中执行此操作,因为 filter()-clause 仅在存在从 C 到 A 的直接连接路径时才有效。
--
编辑:请注意,A 中有不止一行与一个 id 匹配。
【问题讨论】:
标签: django orm django-models