Почему метод set password не работает в django?
Я реализовал класс менеджера пользователей, но мой метод set_password работает только для суперпользователей, и у меня есть проблема с входом обычных пользователей
вот мой manager.py:
from django.contrib.auth.base_user import BaseUserManager
class UserManager(BaseUserManager):
def create_user(self, username, phone_number, password, **extra_fields):
if not phone_number:
raise ValueError('Phone number must be set!')
user = self.model(username=username, phone_number=phone_number, **extra_fields)
user.set_password(user.password)
user.save(using=self._db)
return user
def create_superuser(self, username, phone_number, password=None, **extra_fields):
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_superuser', True)
return self.create_user(username, phone_number, password, **extra_fields)
вот моя модель пользователя:
from django.db import models
# Create your models here.
from django.core.validators import RegexValidator
from django.db import models
from django.contrib.auth.base_user import AbstractBaseUser
from django.contrib.auth.models import AbstractUser
from .manager import UserManager
`class User(AbstractUser):
GENDER_CHOICE = (
('he', 'male'),
('she', 'female')
)
HOBBIES = (
('sport', '🏆'),
('music', '♫'),
('movie', '🎬'),
('sleeping', 'ᶻ 𝗓 𐰁'),
('photography', '📷')
)
username = models.CharField(max_length=25, unique=True)
phone_number = models.CharField(max_length=11, validators=[RegexValidator(
regex=r"^09[0|1|2|3][0-9]{8}$"
)])
biography = models.CharField(max_length=20, default=None, null=True, blank=True)
hobbies = models.CharField(choices=HOBBIES,max_length=250,null=True,blank=True)
gender = models.CharField(choices=GENDER_CHOICE, max_length=250, null=True)
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['phone_number', 'password']
objects = UserManager()`
Я пробовал использовать метод set_password в файле менеджера, но он работает только для суперпользователей и не хэширует пароль обычных пользователей и у меня проблема со входом для обычных пользователей, потому что он сравнивает хэшированный пароль с нехэшированным паролем, который сохранен в базе данных и выдает ошибку Я хотел настроить пароль самостоятельно, но очевидно, вы должны использовать другое имя для поля пароля в модели, например custom_password, так что я попробовал это и я изменил аргумент метода sep_password на "custom_password" и это не сработало снова, так что я удалил поле пароля, чтобы использовать пароль для самой модели, но у меня все еще есть эта проблема, и это мой 4-й проект, и я устал