使用flask-sqlalchemy访问相关记录

时间:2018-03-24 12:43:53

标签: python flask flask-sqlalchemy

我正在尝试使用flask-sqlalchemy访问所有相关记录。

我的模型类'具有以下结构:

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), index=True, nullable=False)
    posts = db.relationship('Post', backref='author', lazy='dynamic')

    def __repr__(self):
        return f'<User {self.name}>'


class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(64), index=True, nullable=False)
    date_posted = db.Column(db.DateTime, index=True, default=datetime.utcnow)
    department_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    def __repr__(self):
        return f'<Post {self.title}>'

我想访问与特定用户相关的帖子信息; 以下模板将传递用户记录的副本。

{% if users %}
<p>USERS</p>
    <ul>
        {% for user in users %}
            <li> {{ user.id }}</li>
            <li> {{ user.name }}</li>

        {% for post in user.posts %}
            <li>{{ post.title }} </li>
        {% endfor %}

        {% endfor %}
    </ul>
{% endif %}

在将值传递给模板之前,是否需要创建某种dict来将帖子映射到他们的uers?

我很欣赏这个问题的简单性,我是一个绝对的初学者。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

模板中的内容看起来正确,您现在只需将用户传递给模板即可。

@app.route('/posts', methods=['GET'])
def posts():
    users = User.query.all()
    return render_template('your_template.html', users=users)

所以现在模板中的{%for user in users%}指的是带有加载关系的查询用户(希望你有你的models.py,你的app.py(上面代码所在的位置)和相关的导入和模板)。

希望有所帮助