首页 > 解决方案 > 如何用间接相关的表注释查询集?

问题描述

我有下表:

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

这可能吗?

标签: djangodjango-models

解决方案


由于这两种关系都是OneToOneField你应该能够使用select_related和遵循的关系

for child in Child.objects.select_related('fk_parent__cousin'):
    print(child, child.fk_parent.cousin)

推荐阅读