SQLAlchemy - order_by no relacionamento para a tabela de junção
Estou usando SQLAlchemy declarativo e tenho três modelos:Role
, Permission
eRolePermission
. No meuRole
modelo, tenho o seguinte:
class Role(Base):
name = Column(u'NAME', VARCHAR(50), nullable=False, unique=True)
permissionLinks = relationship(RolePermission, backref="role", order_by=name)
permissions = relationship(Permission, backref=backref("roles",
order_by=name), secondary=RolePermission.__table__,
order_by=Permission.name)
Agora opermissions
declaração funciona bem, e as permissões associadas a uma função são ordenadas conforme o esperado (por nome). Contudo,permissionLinks
falha com o seguinte erro:
sqlalchemy.exc.ProgrammingError: (ProgrammingError) ('42000', '[42000] [Microsoft] [Driver do ODBC SQL Server] [SQL Server] O identificador de várias partes "ROLES.NAME" não pôde ser vinculado. (4104) (SQLExecDirectW); [42000] [Microsoft] [Driver do ODBC SQL Server] [Instruções do SQL Server] não puderam ser preparadas. (8180) ') u'SELECT [ROLES_PERMISSIONS]. [ROLE_ID] AS [ROLES_PERMISSIONS_ROLE_ID], [ ROLES_PERMISSIONS]. [PERMISSION_ID] AS [ROLES_PERMISSIONS_PERMISSION_ID], [ROLES_PERMISSIONS]. [IS_DENIED] COMO [ROLES_PERMISSIONS_IS_DENIED] \ nFROM [ROLES_PERMISSIONS] \ nWHERE [ROLES_PERMISSIONS] \ nWHERE [RIDES_PERMISSIONS] PEDIDO POR [ROLES]. [NAME] '(19,)
O problema é queRole
não está sendo associado, portanto, não pode classificar porRole.name
. Eu tentei especificarprimaryjoin=id == RolePermission.id1
, mas isso não pareceu mudar nada. Como posso especificar uma junção nesse relacionamento para poder classificar por um campo em uma das tabelas unidas (a saber,Role.name
)?