我正在研究一个示例/学习博客项目,并且在models.py
(见下文)中有两个类分别称为Post和Comment。 Post
包含博客文章信息,Comment
包含每个帖子的回复。
Models.py
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
body = db.Column(db.Text)
title = db.Column(db.String(140))
timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
comments = db.relationship('Comment', backref='blogpost', lazy='dynamic')
class Comment(db.Model):
id = db.Column(db.Integer, primary_key=True)
post_id = db.Column(db.Integer, db.ForeignKey('post.id'))
reply = db.Column(db.String(500))
commentor = db.Column(db.String(64))
timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
我想查询Post
类,同时返回每篇博文中Comment.reply
的计数。
我目前在Post
类上的查询如下:
@app.route('/index')
def explore():
page = request.args.get('page', 1, type=int)
posts = Post.query.order_by(Post.timestamp.desc()).paginate(
page, app.config['POSTS_PER_PAGE'], False)
next_url = url_for('explore', page=posts.next_num) \
if posts.has_next else None
prev_url = url_for('explore', page=posts.prev_num) \
if posts.has_prev else None
return render_template("index.html", title='Explore', posts=posts.items,
next_url=next_url, prev_url=prev_url)
问题:如何使用Flask和SQLAlchemy如何获取每个reply
上的Post
的计数?
答案 0 :(得分:0)
处理此问题的方法是,一旦您对posts
进行查询,就可以在模板中使用{{posts.comments.count()}}来访问相关注释,因为这是一对一的许多关系。