Доступ к значению объекта - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь создать веб-приложение на основе Flask, SQLAlchemy и Jinja2, но не могу получить значение объекта при создании соединения с SQLAlchemy.Например, у меня есть 2 таких объекта в моем models.py:

def user:
    id = dbcolumn (integer )
    username =dbcolumn (varchar(whatever))
    local_id = dbcolumn(integer)

def local:
    id = dbcolumn (integer )
    local_name =dbcolumn (varchar(whatever))   

в моем файле routes.py, если я сделаю:

    qry = User.query.filter(id=1)
    usertoshow = qry.first()
    print(usertoshow)
    ...
    return render_template('editaruser.html', form=form, user=userupd)

, результат при печати вернетсячто-то вроде <User James>.Если я хочу показать результаты в формате HTML с Jinja, я просто делаю {{ user.username }}, и данные отображаются правильно, хотя мне нужно сделать несколько объединений, чтобы собрать все необходимые данные.Например, когда я выполняю объединение, например:

    qry = db.session.query(User, Local).join(Local, (Local.id==User.user_local_id))
    print(qry)
    userupd = qry.first()
    print(userupd)

Запрос, возвращаемый в print (qry), равен

    SELECT user.id AS user_id, user.username AS user_username, user.user_nome AS user_user_nome, user.email AS user_email, user.password_hash AS user_password_hash, user.user_local_id AS user_user_local_id, user.user_terapeuta_id AS user_user_terapeuta_id, user.user_date_crea AS user_user_date_crea, user.user_created_by AS user_user_created_by, user.user_last_login AS user_user_last_login, user.user_activo AS user_user_activo, local.id AS local_id, local.local_nome AS local_local_nome
    FROM user INNER JOIN local ON local.id = user.user_local_id

, а результат во 2-й печати -

(<User Jamesdean>, <Local Somewhere in the world>)  

Я думал, что создаю какой-то объект, который может быть вызван в Jinja2, например:

    <td>Username:</td><td>{{ user.username }} {{ user.local_nome }}</td>

Но это возвращает пустое значение, и никакая ошибка не возвращается, только пустое место, где когда-то это былоимя пользователя до того, как я сделал соединение.

Как я могу получить данные, извлеченные из запроса, представленного здесь: (<User Jamesdean>, <Local Somewhere in the world>)?

1 Ответ

0 голосов
/ 08 июня 2018

Только что нашел.Вам нужно указать тип данных, который вам нужен, в моем случае это должно быть {{user.User.username}} {{user.Local.local_name}}.

...