2013-11-27 50 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)