2013-01-15 27 views
0

我想更新django中的auth_user表的某些字段。其实我迁移一些用户从一个网站到另一个,所以我想更新AUTH_USER table.But密码字段,当我使用更新查询它给了我一些错误django中的auth_user表的问题

有些事情我已经尝试

values=User.objects.get(username=request.POST['username']) 
     values.password=request.POST['password'] 
     values.password.save() 

它给“统一”对象的错误有保存

没有属性”,如果我想这一个

values=User.objects.get(username=request.POST['username']).update(password=request.POST['password']) 

那么错误是“用户”对象有没有属性“更新”

其实我不想发送电子邮件,用户更新他们的密码,并重定向他们忘记密码的页面。 但是,无论何时用户尝试登录网站,如果他的密码不匹配,但他正确键入密码,但由于迁移他的密码不能在django中工作,那么他输入的密码必须在auth_user表(加密密码)中更新。

在两者之间我确保此用户是以前站点的身份验证用户。

所以请建议我一些方法,以便我可以在auth_user表中更新他的密码。

回答

3

密码在Django存储为SHA256哈希值,所以设置

user.password = 'new password' 

是不是一个好主意。幸运的是,django有一些方法来处理你的密码。第二件事:

values.password.save() 

在这里,您试图执行保存()密码对象的方法,它是一个字符串,而不是用户对象。 values.save()会更好,但仍然不正确。你想要做的是这样的:

values.set_password('new password') # Takes care of hashing 
values.save() 

More on the topic in django documentation

+0

OK告诉我一两件事可以我使用了url重定向而不是显示msg inb forms.py – user1746291

0

(代表OP)的

我用这个和问题解决

u = User.objects.get(username__exact='john') 
u.set_password('new password') 
u.save()