FlaskSQLAlchemy, как получить значения, соответствующие клавише foregein-key - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть две модели, Role и RoleMember и маршрут, который возвращает мне некоторые пользовательские данные, в этих деталях у меня есть uid, который я могу использовать, чтобы проверить, существует ли в данных таблицы.

Рольимеет id, name и description. RoleMember имеет id, user_uid и role в качестве внешнего ключа.

Мне нужно проверить, есть ли у пользователя роли, и вернуть имена этих ролей

Я пытался найтис кодом, но я получаю все имена ролей в операторе возврата. У меня есть маршрут, который возвращает мне user_details от пользователя, я использую uid, который я получаю из маршрута, чтобы проверить, существует ли uid в строке user_uid, а затем я возвращаю запрос, который должен дать мнеРоль name, соответствующая внешнему ключу RoleMember

@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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...