我有这个问题,我想为我的应用程序创建两个角色,医生和患者,所以使用flask登录,我们创建了一个用户类来处理我们应用程序中的限制,但我如何根据角色将这些角色转换为我的用户模型来处理信息。
这是我的用户模型
from flaskblog import db
from flaskblog import login_manager
from flask_login import UserMixin
@login_manager.user_loader # decorator para validar si el usuario está autenticado
def load_user(user_id):
return User.query.get(int(user_id))
class User(db.Model, UserMixin):
id= db.Column(db.Integer, primary_key=True)
username= db.Column(db.String(20), unique=True, nullable=False)
email= db.Column(db.String(100), unique=True, nullable=False)
image_file= db.Column(db.String(50), nullable=False, default='default.jpg')
password= db.Column(db.String(60), nullable=False)
'''Relacion uno a muchos '''
# un usuario puede ser autor de uno o muchos posts
# db.relationship describe la relacion entre el usuario y el post
# tiene tres params 1: nombre de la clase con la que se establece la relacion}
# 2: backref con la cual se establece la forma de la relacion el usuario sera el autor del post
# 3: lazy la forma en que se cargan los datos
post = db.relationship('Post', backref='author', lazy=True)
def __repr__(self):
return f"User( '{self.username}', '{self.email}', '{self.image_file}')"我可以为医生和患者创建模型,但如何根据这些角色真正处理信息
发布于 2021-01-16 23:46:39
你可以像这样将角色添加到你的模型中,我在Flask-Security中使用了这个。将以下内容添加到您的用户对象:
roles = db.relationship('Role', secondary='roles_users', backref=db.backref('users', lazy='dynamic'))并添加Roles对象
class Role(db.Model, RoleMixin):
__tablename__ = 'role'
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(255), unique=True)
description = db.Column(db.String(255))最后添加多对多关系
roles_users = db.Table(
'roles_users',
db.Column('user_id', db.Integer(), db.ForeignKey('user.id')),
db.Column('role_id', db.Integer(), db.ForeignKey('role.id'))
)通过此设置,您可以使用以下选项之一来装饰路径
@roles_accepted('medic', 'patient')
@roles_required('medic')https://stackoverflow.com/questions/65746286
复制相似问题