2016-02-10 89 views
1

我用的用戶名= '管理' 和密碼= '散' 我將與ID表更新AUTH_USER如何用queryset更新django auth_user?

UsermodelUpdate= User.objects.filter(id=RSAEnrcyption().decrypt_RSA(request.session['privateKEY'],GetID)).update(username='ramin') 
UsermodelUpdate.set_password(getPassWordUI) 
UsermodelUpdate.save() 

我得到錯誤:

IntegrityError: (1062, "Duplicate entry 'ramin' for key 'username'") 
+0

看來你已經有這個用戶名。嘗試任何其他名稱。用戶名是唯一的字段。您不能爲兩個不同的用戶使用相同的用戶名。 –

+0

現在我能夠更新用戶名,但沒有密碼,如何更新密碼提交更新表auth_user的散列? –

+0

請參閱下面的答案。希望它會有所幫助。 –

回答

2

您使用過濾器所使用獲取多個記錄。當您使用id進行篩選時,您將獲得獨特的記錄。爲此,您可以像這樣

UsermodelUpdate= User.objects.get(id=RSAEnrcyption().decrypt_RSA(request.session['privateKEY'],GetID)) 
UsermodelUpdate.username = 'unique_username' 
UsermodelUpdate.set_password(getPassWordUI) 
UsermodelUpdate.save() 

但是,如果你想爲多個記錄執行此功能,你可以做到這一點像這樣

UsermodelUpdate= User.objects.filter(id=RSAEnrcyption().decrypt_RSA(request.session['privateKEY'],GetID)).update(username='unique_username') 
for user in UsermodelUpdate: 
    user.set_password(getPassWordUI) 
    user.save() 
+0

謝謝,underestand, –

0
UsermodelUpdate.set_password(GetPassWordUI()) 
+0

你的意思是什麼「GetPassWordUI()」?這不是功能 –

+0

什麼是模型默認值?它是可調用的嗎? –

+0

不可調用,我只是更新用戶名(.update(用戶名='ramin')),但我得到錯誤「IntegrityError:(1062,」關鍵的'用戶名''重複條目'ramin'「)」 –