2012-11-26 19 views
0

我正在使用Django和MYSQL后端,并且我注意到当我更新数据库中的数据和新数据可用时有一段延迟。这是发生了什么事在我的代码:使用Django保存mysql数据

def change_user_email_api(request): 
logger.debug("API: resend verification email") 
new_email = request.GET.get('email', '') 
username = request.user.username 
the_user = User.objects.get(username=username) 
the_user.email = new_email 
the_user.save() 
send_verification_email(request.user) 
return generate_success(callback) 

send_verification_email发出一封电子邮件给用户,以验证他们的电子邮件帐户。我想这个错误是由于我传递request.user而不是the_user到send_verification_email。

有没有什么方法可以确保我始终拥有来自db的最新数据,如果有的话,我是否应该这样做?或者我应该只是接受数据需要一些时间来更新和设计?

谢谢!

+1

听起来像别的东西在那里会出错。即使没有'save()',更新实例的属性也是直接可见的。请提供更多的上下文,或者一个真实的例子。 (你的看起来已经弥补了,例如你缺少字符串引号) – second

+0

我已经更新了这个问题,我想我找到了答案,但是一些验证会很好。感谢您的回复:) – jmetz

回答

2

request.user不会从数据库中提取用户对象。它是在请求范围内设置对象的中间件。所以,你不能指望你什么时候使用request.user来为你提供更新的用户实例。如果你想发送电子邮件,你将不得不使用'the_user'对象

def change_user_email_api(request): 
    logger.debug("API: resend verification email") 
    new_email = request.GET.get('email', '') 
    the_user = request.user 
    the_user.email = new_email 
    the_user.save() 
    send_verification_email(the_user) 
    return generate_success(callback) 
+0

这就是我的想法。感谢您的确认! – jmetz