Не хешируется пароль в Django
Я создаю свою модель user и когда делаю это через сайт на поле регистрации пароль не хешируется, при этом когда создаю через админку все нормально.
class User(AbstractBaseUser, PermissionsMixin):
username = models.CharField(max_length=50, unique=True)
email = models.EmailField(null=True, blank=True)
phone = PhoneNumberField(unique=True, null=True)
is_superuser = models.BooleanField(default=False)
is_active = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
is_verifed = models.BooleanField(default=False)
objects = Usermanager()
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['email', 'phone']```
class Usermanager(BaseUserManager):
use_in_migrations = True
def _create_user(self, username=None, email=None, password=None, phone=None, **extra_fields):
user = self.model(**extra_fields,
email = email,
username=username,
)
user.set_password(password)
user.save()
return user
def create_user(self, username, email, phone, password=None, **extra_fields):
extra_fields.setdefault('is_superuser', False)
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_active', True)
return self._create_user(email=email, username=username, phone=phone, password=password, **extra_fields)
def create_superuser(self, username, email, phone, password=None, **extra_fields):
extra_fields.setdefault('is_superuser', True)
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_active', True)
return self._create_user(email=email, phone=phone, username=username, password=password, **extra_fields)```
views.py:
class RegisterUser(CreateView):
form_class = UserForm
template_name = 'users/register.html'
def get_success_url(self):
return reverse_lazy('home')```
User = get_user_model()
class UserForm(ModelForm):
class Meta:
model = User
fields = ['username', 'phone', 'email', 'password', 'is_superuser', 'is_active', 'is_staff']```
Из-за того что пароль не хешируется, не могу выполнять аутентификацию.
Источник: Stack Overflow на русском