我正在尝试使用 contains_eager 选项急切地加载一个自关系属性,以避免在使用关系列之一进行排序或搜索时出现两个连接。我的模型对象如下所示:
class Usuario(DeclarativeBase):
__tablename__ = 'usuarios'
__table_args__ = {'mysql_engine':'InnoDB'}
id=Column(Integer, primary_key=True)
usuario=Column(Text)
...
resellers_id=Column(Integer, ForeignKey('usuarios.id'))
....
reseller = relation('Usuario', remote_side = [id])
我用来获取数据:
u= DBSession.query(Usuario).options(contains_eager('reseller'))\
.outerjoin(self.usuarios_padre, Usuario.resellers_id == self.usuarios_padre.id)\
.filter(Usuario.id=1)\
.order_by(self.usuarios_padre.usuario).one()
其中self.usuarios_padre是 Usuario 的别名之一
如果我访问u.reseller.usuario我会得到与u.usuario相同的结果,而不是从父级获取usuario
知道问题出在哪里吗?我尝试使用lazy="joined" 来定义关系,但没有结果。
问候