我正在尝试修改我的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
来完成的,但是文档中没有任何内容提示使用类似的密码方法。
提前致谢, 标记
答案 0 :(得分:0)
对我有用的解决方案是在我的新用户模型中覆盖此方法:
def set_password(self, raw_password):
self.password = make_password(raw_password)