我正在使用声明性 SQLAlchemy,我有三个模型: Role
、Permission
和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)
现在permissions
声明工作正常,与角色关联的权限按我预期的方式排序(按名称)。但是,permissionLinks
失败并出现以下错误:
sqlalchemy.exc.ProgrammingError: (ProgrammingError) ('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]无法绑定多部分标识符“ROLES.NAME”。(4104) ( SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not beprepared. (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
)中的字段进行排序?