Python 在contains_eager()中指定具有继承层次结构的实体的完整路径

Python 在contains_eager()中指定具有继承层次结构的实体的完整路径,python,sqlalchemy,Python,Sqlalchemy,我有一个类似的问题 (session.query(Root).with_polymorphic('*') .outerjoin(Subclass.related1).options(contains_eager(Subclass.related1))) 到目前为止一切正常 我还想急切地加载Related1.related2,我尝试了以下方法: (session.query(Root).with_polymorphic('*') .outerjoin(Subclass.relat

我有一个类似的问题

(session.query(Root).with_polymorphic('*')
    .outerjoin(Subclass.related1).options(contains_eager(Subclass.related1)))
到目前为止一切正常

我还想急切地加载
Related1.related2
,我尝试了以下方法:

(session.query(Root).with_polymorphic('*')
    .outerjoin(Subclass.related1).options(contains_eager(Subclass.related1))
    .outerjoin(Related1.related2).options(contains_eager(Related1.related2)))
但它不起作用:

sqlalchemy.exc.ArgumentError:在此查询中指定的任何实体上找不到属性“related2”。注意,必须指定从根(映射器|根|根)到目标实体的完整路径

鉴于
related1
通过子类与根实体相关,我不知道如何指定完整路径

我也试过了

(session.query(Root).with_polymorphic('*')
    .outerjoin(Subclass.related1).options(contains_eager(Subclass.related1))
    .outerjoin(Related1.related2).options(contains_eager('related1.related2')))
可预见的是,它会失败

sqlalchemy.exc.ArgumentError:在此查询中,在映射的实体映射器| Root | Root上找不到名为“related1”的属性


如何在
contains\u eager()
中指定间接相关实体的完整路径?

contains\u eager需要查询了解的实体的完整路径:

contains_eager(Subclass.related1, Related1.related2)

太好了,谢谢。现在我可以看到,它实际上是在文件中。