我想更新django中auth_user表的某些字段。实际上我正在将一些用户从一个网站迁移到另一个网站,所以我想更新auth_user表中的密码字段。但是当我使用更新查询时,它给了我一些错误
我试过的一些事情
values=User.objects.get(username=request.POST['username'])
values.password=request.POST['password']
values.password.save()
它给出'unicode'对象的错误没有属性'save
如果我试过这个
values=User.objects.get(username=request.POST['username']).update(password=request.POST['password'])
然后错误'用户'对象没有属性'更新'
实际上我不想向用户发送电子邮件以更新密码并将其重定向到忘记密码页面。 但是每当用户尝试登录到站点并且他的密码不匹配但是他正确输入密码但由于迁移他的密码在django中不起作用,那么他输入的密码必须在auth_user表中更新(加密密码)。
在此期间我确保此用户是以前网站的身份验证用户。
所以请以某种方式建议我,以便我可以在auth_user表中更新他的密码。
答案 0 :(得分:3)
django中的密码存储为sha256哈希,因此设置
user.password = 'new password'
不是个好主意。幸运的是,django有一些方法可以处理哈希密码。第二件事:
values.password.save()
在这里,您尝试在密码对象上执行save()方法,密码对象是字符串,而不是用户对象。 values.save()
会更好,但仍然不正确。你想要做的是:
values.set_password('new password') # Takes care of hashing
values.save()
答案 1 :(得分:0)
(代表OP)
我用过这个,问题解决了
u = User.objects.get(username__exact='john')
u.set_password('new password')
u.save()