FlaskSQLAlchemy如何获取与foregein-key匹配的值

时间:2019-11-05 16:30:09

标签: flask flask-sqlalchemy

我有两个模型,Role和RoleMember,以及一条返回我一些用户详细信息的路由,在这些详细信息中,我有uid可以用来检查表数据上是否存在。

角色具有idnamedescription。 RoleMember具有iduser_uidrole作为外键。

我需要检查用户是否具有角色并返回这些角色名称

我试图提出代码,但是我在return语句中得到了所有角色名称。 我有一条路由,从用户那里返回user_details,我使用从路由中获得的uid来检查uid行上是否存在user_uid,然后返回一个该查询应赋予我与RoleMember外键匹配的角色name

@app.route('/user/<cn>', methods=['GET'])

def user_details(cn):

    user_details = ldap.get_object_details(cn, query_filter="cn=%s")

    if user_details is None:
        response = jsonify(message='User Not Found')
        return response, 404
    for k, v in user_details.items():
            user_details[k] = v[0].decode('utf-8')

    users_uids = db.session.query(RoleMember.user_uid).all()
    role_name = db.session.query(Role.name).join(RoleMember, RoleMember.role == Role.id).all()

    if user_details['uid'] in str(users_uids):
        return str(role_name)
    else:
        return jsonify("User has no roles")

0 个答案:

没有答案