Flask中如何提取同一parent_id的评论数据存入变量?
获取同一文章下的所有评论(Flask-SQLAlchemy实现)
嘿,作为Flask新手,这个需求其实很容易实现!既然你的Comment模型已经定义好了,而且parent_id对应文章ID,咱们直接用SQLAlchemy的查询API就能搞定。
基础实现方式
核心思路就是用filter_by()方法筛选出parent_id等于目标文章ID的所有评论,再用.all()把结果转为列表赋值给comments变量。
示例代码:
# 先定义你要查询的目标文章ID(比如文章ID是10) target_article_id = 10 # 执行查询,获取所有对应parent_id的评论 comments = Comment.query.filter_by(parent_id=target_article_id).all()
执行完这行代码后,comments就是一个包含所有匹配Comment对象的列表,你可以遍历它获取每个评论的author、comment等属性。
在视图函数中使用的示例
如果是在Flask视图里要展示文章的评论,可以这样写:
from flask import render_template from your_app import app, db from your_app.models import Comment @app.route('/article/<int:article_id>') def show_article(article_id): # 获取当前文章的所有评论 comments = Comment.query.filter_by(parent_id=article_id).all() # 把评论传给模板渲染 return render_template('article_detail.html', article_id=article_id, comments=comments)
额外小技巧
- 排序评论:如果想按评论ID倒序(最新的评论在前),可以加上排序语句:
comments = Comment.query.filter_by(parent_id=article_id).order_by(Comment.id.desc()).all() - 处理空结果:如果没有匹配的评论,
.all()会返回空列表,不用担心报错,直接判断列表是否为空即可。
内容的提问来源于stack exchange,提问作者urFate
相关产品推荐
相关产品推荐

