gpt4 book ai didi

Flask-SQLAlchemy InvalidRequestError : Object is already attached to session

转载 作者:行者123 更新时间:2023-12-03 15:46:10 24 4
gpt4 key购买 nike

我正在使用 Flask 创建一个论坛项目,并使用 Flask-SQLAlchemy 管理所有用户、线程、帖子等。但是,我发现当我尝试执行 x(例如编辑帖子)时,如果我尝试执行其他任何操作(例如删除帖子),则会收到 InvalidRequestError。

要编辑帖子,

def post_edit(id, t_id, p_id):
post = Post.query.filter_by(id=p_id).first()
if post.author.username == g.user.username:
form = PostForm(body=post.body)
if form.validate_on_submit():
post.body = form.body.data
db.session.commit()
return redirect(url_for('thread', id=id, t_id=t_id))
return render_template('post_edit.html', form=form, title='Edit')
else:
flash('Access denied.')
return redirect(url_for('thread', id=id, t_id=t_id))

并删除帖子,
@app.route('/forum=<id>/thr=<t_id>/p=<p_id>/delete', methods=['GET','POST'])
def post_delete(id, t_id, p_id):
post = Post.query.filter_by(id=p_id).first()
if post.author.username == g.user.username:
db.session.delete(post)
db.session.commit()
return redirect(url_for('thread', id=id, t_id=t_id))
else:
flash('Access denied.')
return redirect(url_for('thread', id=id, t_id=t_id))

并发帖
@app.route('/forum/id=<id>/thr=<t_id>', methods=['GET','POST'])
def thread(id, t_id):
forum = Forum.query.filter_by(id=id).first()
thread = Thread.query.filter_by(id=t_id).first()
posts = Post.query.filter_by(thread=thread).all()
form = PostForm()
if form.validate_on_submit():
post = Post(body=form.body.data,
timestamp=datetime.utcnow(),
thread=thread,
author=g.user)
db.session.add(post)
db.session.commit()
return redirect(url_for('thread', id=id, t_id=t_id))
return render_template('thread.html', forum=forum, thread=thread, posts=posts, form=form, title=thread.title)

不幸的是,解决此问题的唯一可靠方法是重置实际运行应用程序的脚本 run.py
#!bin/python

from app import app
app.run(debug=True,host='0.0.0.0')

最佳答案

您是否在使用 WooshAlchemy,因为它可能是您问题的一部分。 Described here

他描述了需要修改 WooshAlchemy 扩展的“修复”。

通常虽然这可能意味着你调用了一个 Post 模型对象,然后使用“session.add”附加它,然后尝试“session.delete”或在同一个对象上执行另一个“session.add”。

此外,您的请求路由对于 Flask 来说有点奇怪,我以前从未见过 Flask 的“thr= ”类型的符号。这对你来说效果好吗?

http://flask.pocoo.org/docs/quickstart/#variable-rules

关于Flask-SQLAlchemy InvalidRequestError : Object is already attached to session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16529660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com