2014-09-03 68 views
0

我正在做一个Python/Flask中的小项目。我的数据库模型由两个表组成,分别表示发布和评论。发布表由发布和评论表组成。该职位。帖子和评论链接..烧瓶在客户端使用SQL查询

我有两个模板,feed.html和blogpost.html ..在feed.html将显示帖子的标题列表,当点击标题链接时,它会显示通过blogpost.html完整的文章内容..

现在,在feed.html它会列出所有现在是精细的职位。但我想要实现的评论每篇文章都有一个号码,它可以很容易地从服务器端查询,但问题是 - 我传递所有职位的feed.html和渲染使用在客户端循环每个职位头衔。

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

刚刚澄清,神社模板是不是客户端,它们是由服务器上的应用程序呈现。在执行:(“len个”是不确定的UndefinedError) – davidism 2014-09-03 14:20:08

回答

1

建立一个多到一个双向关系CommentPost之间:

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来计算。

+0

嗨..感谢您的答复..它工作正常..但是,我不能让没有使用的模板LEN(post.comments),得到错误的意见.. – avinoth 2014-09-03 14:11:15

+0

哇..非常感谢.... – avinoth 2014-09-03 14:21:05