с собственности на
ользую декларативную 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] [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 * ЗАКАЗАТЬ [РОЛЕС]. [ИМЯ] '(19,)
Проблема в том, чтоRole
не присоединяется, поэтому он не может сортировать поRole.name
, Я пытался указатьprimaryjoin=id == RolePermission.id1
Но это, похоже, ничего не изменило. Как я могу указать соединение для этого отношения так, чтобы я мог сортировать по полю в одной из соединенных таблиц (а именно,Role.name
)?