Salut J'essaie de mettre à jour une ligne d'utilisateur lors de la connexion de l'utilisateur. Je veux simplement augmenter le compte de connexion des utilisateurs par un. Voici le code dans la méthode du contrôleur de post_login:comment mettre à jour un enregistrement en utilisant DBSession dans turbogears 2
@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)
L'enregistrement utilisateur isnt simplement se mis à jour dans la base de données. La documentation TG indique que le gestionnaire de transactions doit vider toutes les transactions et exécuter automatiquement tout le SQL en suspens, mais il ne semble pas fonctionner avec la mise à jour. J'ai essayé de mettre dans un DBSession.commit() après pour commettre manuellement mais obtenir un message d'erreur. De même, l'ajout de DBSession.flush() à la méthode du contrôleur n'entraîne pas d'erreur mais ne met pas à jour l'enregistrement.
Quel message d'erreur obtenez de DBSession.commit()? – codeape