Tôi đang sử dụng SQLAlchemy khai báo và tôi có ba mô hình: Role
, Permission
và RolePermission
. Trong mô hình Role
tôi, tôi có như sau:SQLAlchemy - order_by về mối quan hệ cho bảng tham gia
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)
Bây giờ tờ khai permissions
hoạt động tốt, và các điều khoản liên quan đến vai trò đi ra được sắp xếp như tôi mong đợi (theo tên). Tuy nhiên, permissionLinks
không thành công với các lỗi sau:
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,)
Vấn đề là Role
không được tham gia, vì vậy nó không thể sắp xếp theo Role.name
. Tôi đã thử chỉ định primaryjoin=id == RolePermission.id1
, nhưng điều đó dường như không thay đổi bất cứ điều gì. Làm thế nào tôi có thể chỉ định một tham gia vào mối quan hệ này sao cho tôi có thể sắp xếp theo một trường trong một trong các bảng được nối (cụ thể là, Role.name
)?
Tôi muốn hiển thị tất cả các 'RolePermission' hàng gắn liền với một sự cho phép nào đó, và tôi muốn họ hiển thị theo thứ tự của 'Role.name'. Hiện nay tôi sắp xếp chúng sau khi nhận được kết quả từ DB, nhưng có vẻ như tôi sẽ có thể làm điều đó với SQLAlchemy. Tôi hiển thị các hàng 'RolePermission' và không chỉ các hàng' Permission' (thông qua 'quyền') vì' RolePermission' có thông tin về ngày tạo, tác giả, vv mà 'Permission' không có. –
Nhưng trong mã mẫu của bạn, bạn đang cố gắng sắp xếp các đối tượng 'RolePermission' được liên kết với _role_ đã cho. –
Phải. Có vẻ như điều đó có thể thực hiện được, bởi vì mỗi 'RolePermission' có một' Vai trò', vậy tại sao tôi không thể sắp xếp 'RolePermission' bởi một thuộc tính trên' Vai trò'? –