【问题标题】:Flask use SQL query at client sideFlask 在客户端使用 SQL 查询
【发布时间】:2014-09-03 13:14:09
【问题描述】:

我正在用 Python / Flask 做一个小项目。我的数据库模型由两个表组成,分别是 post 和 cmets。Post 表由帖子组成,而 cmets 表由帖子的 cmets 组成。帖子和评论已链接..

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

现在,在 feed.html 中,它会列出所有现在很好的帖子。但我想实现每个帖子的 cmets 数量,可以从服务器端轻松查询,但问题是 - 我我将所有帖子传递给 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 中,我渲染为,​​p>

{ % 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 %}

我现在被困在这里..

我可以通过执行得到一个帖子有多少个cmet,

comments = Comment.query.filter_by(post_id = post.id).all()
len(comments)

但是当整体上通过模板传递时,我无法对单个帖子进行查询..

请帮助解决这个问题...

【问题讨论】:

    标签: python flask sqlalchemy flask-sqlalchemy


    【解决方案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 来获取该帖子的 cmets。在 Jinja 模板中,使用 post.comments|length 获取计数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      • 1970-01-01
      • 1970-01-01
      • 2020-08-31
      • 2011-12-12
      • 1970-01-01
      相关资源
      最近更新 更多