相关疑难解决方法(0)

Flask-SQLAlchemy InvalidRequestError:对象已附加到会话

我正在使用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))
Run Code Online (Sandbox Code Playgroud)

并删除帖子,

@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))
Run Code Online (Sandbox Code Playgroud)

并张贴帖子

@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 …
Run Code Online (Sandbox Code Playgroud)

flask flask-sqlalchemy

5
推荐指数
1
解决办法
3632
查看次数

标签 统计

flask ×1

flask-sqlalchemy ×1