我正在使用Python / Flask做一个小项目。我的数据库模型由两个表组成,例如post和comments .. Post表包含帖子,而comments表包含帖子的评论。发布和评论已链接..
我有两个模板,feed.html和blogpost.html ..在feed.html中将显示帖子的标题列表,当点击标题链接时,它将通过blogpost.html显示完整的帖子内容..
现在,在feed.html中它会列出所有帖子现在都很好..但是我想实现每个帖子的评论数量,这可以很容易地从服务器端查询,但问题是 - 我我将所有帖子传递给feed.html,并在客户端使用for循环呈现每个帖子标题..
user = User.query.filter_by(name = name).first()
return render_template("feed.html",
posts = Post.query.filter_by(user_id = user.id).order_by(Post.timestamp.desc()).all())
并在feed.html中,我呈现为,
{ % for post in posts %}
<a href="/feed/{{post.id}}" class="post-title">{{ post.title }}</a>
by <a href="/feed/{{ post.author.name }}">{{ post.author.name }}</a>
| {{ post.timestamp}}
| <a href="#"> TROUBLESOME PART </a>
{% endfor %}
我目前被困在这里..
我可以通过执行来获得帖子的评论数量,
comments = Comment.query.filter_by(post_id = post.id).all()
len(comments)
但是当我通过模板传递整个帖子时,我无法对各个帖子进行查询..
请帮忙......
答案 0 :(得分:2)
在Comment
和Post
之间建立多对一的双向关系:
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
class Comment(db.Model):
id = db.Column(db.Integer, primary_key=True
post_id = db.Column(db.Integer, db.ForeignKey(Post.id), nullable=False)
post = db.relationship(Post, backref='comments')
现在,如果您有Post
的实例,则可以post.comments
获取该帖子的评论。在Jinja模板中,使用post.comments|length
来计算。