嗨,我试图更新后的用户登录用户的行。我只是想增加用户可以通过一个登录计数。这里是在post_login控制器方法的代码:

@expose()  
def post_login(self, came_from=url('/')):  
    """  
    Redirect the user to the initially requested page on successful  
    authentication or redirect her back to the login page if login failed.  
    """  
    if not request.identity:  
        login_counter = request.environ['repoze.who.logins'] + 1  
        redirect(url('/user/login', came_from=came_from, __logins=login_counter))  

    user_name = request.identity['repoze.who.userid']
    user = User.by_user_name(user_name)
    user.tll_num_logins += 1
    user.tll_last_login = datetime.now()
    redirect(came_from)

心不是简单地在数据库中得到更新的用户记录。该TG文件说,事务管理器应该清空所有的交易,并自动执行所有悬而未决的SQL,但它似乎与更新合作。我试着投入DBSession.commit()后手动提交,但得到一个错误信息。同样地,加入DBSession.flush()到控制器方法不会错误,但实际上并没有更新该记录。

有帮助吗?

解决方案

对不起所有,原来,TG2事务管理器是工作毕竟。错误来了,因为我打电话事务管理等的记录更新没有得到刷新外post_login功能。我不知道为什么没有让我提交。但是我感动post_login控制器,现在我指定的作品上面的代码,它会自动更新 - 无需甚至DBSession.update(用户)。

其他提示

您必须告诉会话对象更新对象:

DBSession.update(user)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top