我正在使用声明式 SQLAlchemy,并且有三个模型:Role
, Permission
, and RolePermission
。在我的Role
模型,我有以下内容:
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)
Now the permissions
声明工作正常,并且与角色关联的权限按照我的预期排序(按名称)。然而,permissionLinks
失败并出现以下错误:
sqlalchemy.exc.ProgrammingError: (ProgrammingError) ('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]无法绑定多部分标识符“ROLES.NAME”。(4104) ( SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server 驱动程序][SQL Server]无法准备语句。(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] AS [ROLES_PERMISSIONS_IS_DENIED] \nFROM [ROLES_PERMISSIONS] \nWHERE [ROLES_PERMISSIONS].[ROLE_ID] = ?按 [角色].[姓名] 排序' (19,)
问题是Role
未加入,因此无法排序Role.name
。我尝试指定primaryjoin=id == RolePermission.id1
,但这似乎并没有改变任何事情。如何指定此关系的联接,以便我可以按联接表之一中的字段进行排序(即,Role.name
)?