2013-11-27 81 views
0

我想修改我的Django項目身份驗證,以便我可以使用我自己的用戶模型。更改Django身份驗證模型密碼字段

我到目前爲止工作,但我無法重寫「密碼」字段。我想將名稱更改爲「password_hash」。

我已經試過這個經理:

class UserManager(BaseUserManager): 
    def create_user(self, email_address, full_name, password=None): 

     if not email_address: 
      raise ValueError('Users must have an email address') 

     user = self.model(
      email_address = self.normalize_email(email_address), 
      full_name = full_name, 
     ) 

     user.set_password(password) 
     user.save(using=self._db) 
     return user 

    def create_superuser(self, email_address, full_name, password_hash): 
     user = self.create_user(email_address, 
      password_hash=password_hash, 
      full_name=full_name, 
     ) 
     user.is_admin = True 
     user.save(using=self._db) 
     return user 

但是我得到的錯誤TypeError: create_superuser() got an unexpected keyword argument 'password'

如何阻止create_superuser()預期「密碼」並將其更改爲「password_hash」。對於用戶名,我通過更改USERNAME_FIELD來完成,但是文檔中沒有提供類似的密碼方法。

由於提前, 馬克

+0

是否有錯字?你檢索'password_hash'參數,但你設置'密碼'arg .. – mariodev

+0

啊謝謝,是的,這是一個錯字,但它沒有解決問題。解決方法是重寫'def set_password(self,raw_password): self.password = make_password(raw_password)'。我會盡快回復它。 –

回答

0

這工作對我來說是我的新用戶模型重寫此方法解決辦法:

def set_password(self, raw_password): 
     self.password = make_password(raw_password)