Взаимосвязь с колбами и зефиром - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь построить ролевую базу между 3 моделями,

UserModel:

class UserModel(db.Model):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    username = Column(String(120), unique=True, nullable=False)
    password = Column(String(120), nullable=False)
    reset_token = Column(String(120), nullable=True)
    status = Column(Integer, nullable=True)
    roleofuser = db.relationship('RoleUser', backref=db.backref('roleofuser'))

после этого я создал ролевую и пользовательскую модель Модель UserRole

class RoleUser(db.Model):
    __tablename__ = 'role_users'

    id = Column(Integer(), primary_key=True)
    role_id = Column(Integer(), db.ForeignKey('role.id'))
    user_id = Column(Integer(), db.ForeignKey('users.id'))
    role_rel = db.relationship('Role',
                               backref=db.backref('role_rel'))
    user_rel = db.relationship('UserModel',
                               backref=db.backref('user_rel'))

И, наконец, Ролевая модель

class Role(db.Model):
    __tablename__ = 'role'

    id = Column(Integer(), primary_key=True)
    name = Column(String(50), unique=True)

После этого я использовал схему Marshmallow для отображения данных

class UserScheme(ma.MOdelSchema):
    roleofuser = fields.Nested("RoleUserSchema")
    username = fields.String(required=True)

    class Meta:
        model = UserModel
        #fields = ("username","userrole")

""" Role USER mapped """ 
class RoleUserSchema(ma.Schema):
    user_rel = fields.Nested("UserScheme")
    role_rel = fields.Nested("RoleSchema")
    class Meta:
        model = RoleUser

"""Role """

class RoleSchema(ma.Schema):
    roleuser_rel = fields.Nested("RoleUserSchema")
    class Meta:
        Role

Теперь проблема после вызова user.query.all(), данные отношения не добавляются в результат, получить результат как:

{
roleofuser:{},
username: abcd123
} 

и я ожидаю

{
    roleofuser : {
     role: 1,
    name: 'admin'
    },
username : 'admin232'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...