У меня есть две модели, 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")