我正在尝试创建一个基于Flask、SQLAlchemy和Jinja2的web应用程序,但在使用SQLAlchemy进行连接时,我无法获得对象值。例如,在我的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>
的内容。如果我想用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)
打印返回的查询(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>)
刚找到。您需要引用所需的数据类型,在我的例子中,它应该是{{user.user.username}{{{user.Local.Local_name}}
相关问题 更多 >
编程相关推荐