Как аннотировать набор запросов косвенно связанной таблицей? - PullRequest
0 голосов
/ 23 марта 2020

У меня есть следующая таблица:

class Parent:
    pass


class Child:
    fk_parent = models.OneToOneField(Parent, on_delete=models.CASCADE)


class Cousin:
    fk_parent = models.OneToOneField(Parent, on_delete=models.CASCADE)

Я хочу получить набор запросов Child, помеченный как Cousin. В PSQL я бы просто написал:

SELECT a.*, b.*
FROM child a
INNER JOIN cousin b ON b.fk_parent_id = a.fk_parent_id

Возможно ли это?

1 Ответ

0 голосов
/ 23 марта 2020

Поскольку оба отношения OneToOneField, вы сможете использовать select_related и следовать отношениям

for child in Child.objects.select_related('fk_parent__cousin'):
    print(child, child.fk_parent.cousin)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...