我正在尝试创建基于Flask,SQLAlchemy和Jinja2的Web应用程序,但在使用SQLAlchemy进行连接时无法获得对象值。例如,我的models.py
中有2个这样的对象:
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>
之类的内容。如果我想用Jinja在HTML中显示结果,我只需{{ 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
并且第二次打印的结果是
(<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>)
?
答案 0 :(得分:0)
刚刚找到它。您需要引用所需的数据类型,在我的情况下,它应该是{{user.User.username}} {{user.Local.local_name}}。