我有一个问题
(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: Can't find property 'related2' on any entity specified in this Query. Note the full path from root (Mapper|Root|root) to target entity must be specified.
鉴于 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: Can't find property named 'related1' on the mapped entity Mapper|Root|root in this Query.
如何在 contains_eager()
中指定间接相关实体的完整路径?
最佳答案
contains_eager 需要查询所知道的实体的完整路径:
contains_eager(Subclass.related1, Related1.related2)
关于python - 在 contains_eager() 中指定具有继承层次结构的实体的完整路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14414345/