我使用的是聲明式SQLAlchemy,我有三種模式:Role
,Permission
和RolePermission
。在我Role
模型中,我有以下幾點:SQLAlchemy - order_by關係連接表
現在permissions
申報工作正常,以及與角色相關聯的權限出來的排序,因爲我希望(通過名稱)。然而,permissionLinks
失敗,出現以下錯誤:
sqlalchemy.exc.ProgrammingError: (ProgrammingError) ('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]The multi-part identifier "ROLES.NAME" could not be bound. (4104) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared. (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] = ? ORDER BY [ROLES].[NAME]' (19,)
的問題是,Role
沒有被加入,所以它不能排序Role.name
。我試過指定primaryjoin=id == RolePermission.id1
,但這似乎沒有改變任何東西。我如何在這個關係上指定一個連接,以便我可以按照一個連接表中的字段進行排序(即Role.name
)?
我要顯示所有與給定的許可相關的'RolePermission'行,我想他們顯示在Role.name'的'秩序。目前,我從數據庫獲得結果後對它們進行排序,但似乎我應該可以用SQLAlchemy來完成。我顯示'RolePermission'行,而不是'Permission'行(通過'permissions'),因爲'RolePermission'有'Permission'沒有的有關創建日期,創建者等的信息。 –
但是在你的示例代碼中,你正嘗試對與給定的_role_關聯的'RolePermission'對象進行排序。 –
沒錯。看起來這應該是可行的,因爲每個'RolePermission'都有一個'Role',所以爲什麼我不能通過'Role'上的屬性對'RolePermission'進行排序呢? –