Używam deklaratywnego SQLAlchemy i mam trzy modele: Role
, Permission
i RolePermission
. W moim Role
modelu, mam następujące:SQLAlchemy - order_by w związku dla tabeli łączenia
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)
Teraz deklaracja permissions
działa dobrze i uprawnienia związane z rolą wyjdzie sortowane jako Spodziewam (według nazwy). Jednak permissionLinks
nie powiedzie się z powodu następującego błędu:
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,)
Problemem jest to, że Role
nie jest połączone, więc nie można sortować według Role.name
. Próbowałem określać primaryjoin=id == RolePermission.id1
, ale to nie zmienia niczego. Jak mogę określić sprzężenie w tej relacji, aby można było sortować według pola w jednej z połączonych tabel (mianowicie Role.name
)?
chcę, aby wyświetlić wszystkie wiersze 'RolePermission' związanych z danym zezwoleniem, i chcę je wyświetlane w kolejności' Role.name'. Obecnie sortuję je po uzyskaniu wyników z DB, ale wydaje mi się, że powinienem móc to zrobić z SQLAlchemy. Wyświetlam wiersze 'RolePermission', a nie tylko' Permission' (za pomocą 'permissions'), ponieważ' RolePermission' ma informacje o dacie utworzenia, twórcy itp., Których 'Permission' nie posiada. –
Ale w kodzie przykładowym próbujesz sortować obiekty "RolePermission" związane z podanym _role_. –
Dobrze. Wygląda na to, że powinno być możliwe, ponieważ każda 'RolePermission' ma' Role', więc dlaczego nie mogę sortować 'RolePermission's przez właściwość' Role'? –