Woh*_*mer 2 python sqlite foreign-key-relationship flask flask-sqlalchemy
我最近刚使用flask和sql-alchemy进入web开发.一切都工作正常,直到我不得不使用外键访问值.我有这样的模特:
class User(db.Model):
_tablename='user'
id=db.Column(db.Integer, primary_key=True)
name=db.Column(db.String)
email=db.Column(db.String)
class Post(db.Model):
_tablename='post'
id=db.Column(db.Integer, primary_key=True)
title=db.Column(db.String)
user=db.Column(db.Integer, db.ForeignKey('user.id'))
Run Code Online (Sandbox Code Playgroud)
我想在网页上显示所有帖子的列表,在html文件中有这样的内容:
{% for entry in entries %}
<tr>
<td> {{ entry.id }} </td>
<td> {{ entry.title }} </td>
<td> {{ entry.user_name }} </td>
<td> {{ entry.user_email }} </td>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何使用user.id外键从用户表访问用户和电子邮件.我试过了
posts = Post.query.all()
for post in posts:
post.user_name = User.query.filter_by(id=post.id).first()
return render_template('post.html', entries=posts)
Run Code Online (Sandbox Code Playgroud)
但是,然后不仅仅返回名称和电子邮件,如帖子中的标题,它返回的内容类似于(u'User A',)和(u'test@test.com',).我想不出任何其他方式.任何人都可以帮助我吗?
你在那里almolst但是下面的代码实际上并没有返回用户名.它返回整个用户对象:
User.query.filter_by(id=post.id).first() # Does Not return user_name but returns the user object
Run Code Online (Sandbox Code Playgroud)
所以我会称之为:
userobj = User.query.filter_by(id=post.id).first()
Run Code Online (Sandbox Code Playgroud)
然后你可以检索用户名,发送电子邮件为:
if userobj is not None: # Make sure user exists
username = userobj.name
email = userobj.email
Run Code Online (Sandbox Code Playgroud)
作为捷径,您还可以:
username = User.query.filter_by(id=post.id).first().name
email = User.query.filter_by(id=post.id).first().email
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4838 次 |
最近记录: |