更改Django身份验证模型密码字段

时间:2013-11-27 12:15:24

标签: python django django-models django-authentication

我正在尝试修改我的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”并将其更改为“password_hash”。对于用户名,我是通过更改USERNAME_FIELD来完成的,但是文档中没有任何内容提示使用类似的密码方法。

提前致谢, 标记

1 个答案:

答案 0 :(得分:0)

对我有用的解决方案是在我的新用户模型中覆盖此方法:

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