我想访问已登录用户的角色并将其显示在屏幕上,我目前正在使用flask-admin。
现在,对于数据库:
我为用户提供了以下代码:
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(255), unique=True)
*some columns*
roles = db.relationship('Role', secondary=roles_users,
backref=db.backref('users', lazy='dynamic'))
def __str__(self):
return self.email
以下为角色:
class Role(db.Model, RoleMixin):
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(80), unique=True)
description = db.Column(db.String(255))
def __str__(self):
return self.name
以及它们的外来值表:
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'))
)
现在我已经尝试过get item
和select by index
,但是没有用。因此,我猜想还有一种使用SQLAlchemy来选择我的值的“简单方法”,但是有没有例子?
答案 0 :(得分:0)
SQLAlchemy允许您通过原始对象的属性访问相关对象。
要获取与用户关联的所有角色的列表,
roles = logged_in_user.roles.all()
要获得特定角色,
role = logged_in_user.roles.first()
或者也许
role = logged_in_user.roles.filter_by(prop="val")
编辑
首先通过SQLAlchemy查询获得所需的user
对象,然后从roles
读取user
属性
请尝试以下操作:
def get_role():
username = session['username']
with session_scope() as s:
logged_in_user = s.query(admin.User).filter_by(username=username).first()
return logged_in_user.roles