Ситуация
У меня 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. Теперь мне нужна вся информация из C, где pub_date совпадает с pub_date в A, а B_id совпадает с B_id в A.
В SQL это будет довольно простой запрос:
SELECT C.information FROM A JOIN C USING(B_id, pub_date) WHERE A.id = 1234;
Но я просто не могу понять, как это сделать в синтаксисе Django ORM, например filter()
-Предложение работает только в том случае, если существует прямой путь соединения от C к A.
-
Редактировать: Учтите, что в A имеется более одной строки, которая соответствует одному идентификатору.