@Kirill-Gorelov
С ума с IT

Sqlachemy не достает данные по связи в таблицах?

Всем привет.
Есть 4 таблицы

class Roles(Base):
    __tablename__ = 'roles'

    def __repr__(self):
        return f"{self.name}"

    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String)
    description = Column(String)
    users = relationship('Users', back_populates='role')
    permissions = relationship('RolesPermissions', back_populates='role')


class Module(Base):
    __tablename__ = 'modules'

    def __repr__(self):
        return f"{self.name}"

    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String, unique=True)
    code = Column(SQLEnum(ModuleEnum), unique=True)
    description = Column(String)
    permissions = relationship('RolesPermissions', back_populates='module')


class RolesPermissions(Base):
    __tablename__ = 'roles_permissions'

    def __repr__(self):
        return f"{self.id}"

    id = Column(Integer, primary_key=True, autoincrement=True)
    role_id = Column(Integer, ForeignKey('roles.id'))
    module_id = Column(Integer, ForeignKey('modules.id'))
    is_create = Column(Boolean, default=0)
    is_read = Column(Boolean, default=0)
    is_update = Column(Boolean, default=0)
    is_delete = Column(Boolean, default=0)
    role = relationship('Roles', back_populates='permissions')
    module = relationship('Module', back_populates='permissions')

class Users(Base):
    __tablename__ = "users"

    def __repr__(self):
        return f"{self.email}"

    id = Column(Integer(), primary_key=True, autoincrement=True)
    email = Column(String(255), nullable=False)
    first_name = Column(String(255), nullable=True)
    last_name = Column(String(255), nullable=True)
    patronymic = Column(String(255), nullable=True)
    role_id = Column(Integer, ForeignKey('roles.id'))
    password = Column(String(255), nullable=False)
    sort = Column(Integer(), default=1000)
    active = Column(Boolean(), default=True)
    created_on = Column(DateTime(), default=datetime.now)
    updated_on = Column(DateTime(), default=datetime.now, onupdate=datetime.now)
    role = relationship('Roles', back_populates='users')


Теперь стоит задача через пользователя достать данные из таблицы RolesPermissions и Module т.к. роль связанна с этими таблицами.
user.role - работает, а user.role.permissions - выводит только массив id RolesPermissions, а не массив объектов...
И вот с этим проблема не пойму как это решить.
Я уже пробовал поиграть с lazy параметрами, но все четно....
Буду рад любой помощи)
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы