【问题标题】:Get the average rating in flask blog, SQL, Python获取flask博客、SQL、Python中的平均评分
【发布时间】:2021-08-21 10:37:52
【问题描述】:

我正在使用 SQL-alchemy 和 Python 创建一个 Flask 博客。该博客是一个食谱博客,用户可以在其中对食谱进行评分。我得到了所有的评级,但我也想得到平均评级。到目前为止我已经尝试过了,但我无法让它工作......

在我的 HTML 中:

 <div id="recipe" class="row">
    <div class="col">
        <ul class="list-group">
            <li class="list-group-item"><strong>Average Rating: </strong>{{ post.critic_avg }}</li>
        </ul>
    </div>

在我的路线文件中:

@app.route("/recipes/<int:recipe_id>")
def recipe(recipe_id):
    recipe = Recipe.query.get_or_404(recipe_id)
    form = RatingForm()
    critic_avg = db.session.query(func.avg(Rating.rating)).all()
    return render_template('recipe_page.html', title=recipe.title, post=recipe, form=form, critic_avg=critic_avg)

在我的模型中:

class Rating(db.Model):
    id = db.Column(db.Integer, primary_key=True, nullable=False)
    rating = db.Column(db.Integer, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    user = db.relationship(User, backref=db.backref('ratings', lazy=True))
    recipe_id = db.Column(db.Integer, db.ForeignKey('recipe.id'), nullable=False)
    recipe = db.relationship(Recipe, backref=db.backref('ratings', lazy=True))
    def __repr__(self):
        return f"<Rating (id='{self.id}', rating='{self.rating}', user_id='{self.user_id}', recipe_id='{self.recipe_id}')>"

也许我做错了,很高兴得到一些指导:)

【问题讨论】:

  • 问题与SQL有关吗?我没有看到上面的 SQL。
  • 是的,我们正在使用 SQL 和 Python 做一个 FlaskBlog :)
  • 如果您需要 SQL 帮助,我们需要查看示例表数据和预期结果 - 全部为格式化文本,以及当前查询尝试。 IE。 minimal reproducible example.
  • critic_avg = db.session.query(func.avg(Rating.rating)).all() 的结果是什么?

标签: python sql flask average


【解决方案1】:

两件事, 首先,all() 将返回包含单个项目的列表,在这种情况下,您可以使用 scalar(),这将为您提供单个值

critic_avg = db.session.query(func.avg(Rating.rating)).scalar() or 0

在 jinja 中,您尝试使用 post.critic_avg 访问 critic_avg,而使用 post 时不可用,您将其作为 critic_avg 传递给 jinja,因此,在 jinja 中您可以直接访问它

<li class="list-group-item"><strong>Average Rating: </strong>{{ critic_avg }}</li>

https://docs.sqlalchemy.org/en/latest/orm/query.html#sqlalchemy.orm.query.Query.scalar

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 2015-01-30
    • 2013-02-06
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多