Python 金字塔/SQL炼金术分离实例错误

Python 金字塔/SQL炼金术分离实例错误,python,sqlalchemy,pyramid,Python,Sqlalchemy,Pyramid,我正在尝试使用金字塔框架实现电子邮件确认。 下面是确认数据库中的用户并将其重定向到主页的代码 user = DbSession.query(User).filter_by(email=email).one() if user.approved: return {'msg': _('Already approved')} if user.check_approve_token(hash): user.approved = Tr

我正在尝试使用金字塔框架实现电子邮件确认。 下面是确认数据库中的用户并将其重定向到主页的代码

   user = DbSession.query(User).filter_by(email=email).one()     
   if user.approved:
       return {'msg': _('Already approved')}        
   if user.check_approve_token(hash):
       user.approved = True
       self.request.session.save()
       self.request.session['user'] = user
       return HTTPFound(self.request.route_url('home'),
                            headers=remember(self.request, user.guid))
当我试图从另一个处理程序获取
self.request.session['user']
变量时,我得到一个
DetachedInstanceError:实例未绑定到会话;属性刷新操作无法继续
。据我所知,这个错误是由于修改了
User
实例而引起的。我怎样才能修好它


提前感谢,Ivan。

错误是因为模型对象(
user
)由会话(
DbSession
)管理。当您将实例存储在会话(
request.session
)中,然后在另一个请求中再次访问它时,这是使用不同的
DbSession
。支持在会话之间移动托管对象,但不能自动移动。从
request.session
检索对象时,可以通过
user=DbSession.merge(user)
将其合并到新的
DbSession