Django user.checkpassword всегда возвращает `FALSE`

Я использую пользовательский аутентификатор в моем Django приложении, и пытаюсь войти в систему с помощью API, но когда я использую check_password, он всегда выдает мне false, даже если это правильный пароль, вот мой код:

Модель пользователя

class CustomUserManager(BaseUserManager):
    def create_user(self, phone, password=None):
        if not phone:
            raise ValueError('Users must have a phone number')

        user = self.model(
            phone=phone,
        )

        user.set_password(password)
        user.save(using=self._db)
        return user

    def create_superuser(self, phone, password):
        user = self.create_user(
            phone,
            password=password,
        )
        user.is_admin = True
        user.is_staff = True
        user.is_superuser = True
        user.user_type = 'admin'
        user.save(using=self._db)
        return user
        
class CustomUser(AbstractUser):
    user_type_choices = (

        ('client', 'Client'),
        ('supplier', 'Supplier'),
        ('admin', 'Admin'),
    )
    username=None
    phone = models.CharField(max_length=200, unique=True,verbose_name=_("Phone"),help_text=_("Phone number of the user"))
    user_type = models.CharField(max_length=200, choices=user_type_choices,verbose_name=_("Type"),help_text=_("Type of the user"),default='client')
    company_name = models.CharField(max_length=200,verbose_name=_("Company Name"),help_text=_("Company name of the supplier"),blank=True,null=True)
    email = models.EmailField(max_length=200,verbose_name=_("Email"),help_text=_("Email of the supplier"),blank=True,null=True)
    establishment_date = models.DateField(verbose_name=_("Establishment Date"),help_text=_("Establishment date of the supplier's company"),blank=True,null=True)
    number_of_projects = models.IntegerField(verbose_name=_("Number of projects"),help_text=_("Number of projects the supplier has"),blank=True,null=True)
    tax_id = models.FileField(upload_to='media/tax_id',verbose_name=_("Tax ID"),help_text=_("Tax ID of the supplier"),blank=True,null=True)
    logo = models.FileField(upload_to='media/logo',verbose_name=_("Logo"),help_text=_("Logo of the supplier"),blank=True,null=True)
    business_register = models.FileField(upload_to='media/business_register',verbose_name=_("Business Register"),help_text=_("Business register of the supplier"),blank=True,null=True)
    about_company = models.TextField(verbose_name=_("About Company"),help_text=_("About company of the supplier"),blank=True,null=True)

    USERNAME_FIELD = 'phone'
    REQUIRED_FIELDS = []

    objects = CustomUserManager()


    class Meta:
        verbose_name = _("User")
        verbose_name_plural = _("Users")


А вот код, в котором я пытаюсь проверить пароль :

class LoginViewSet(viewsets.ViewSet):
    """
    Checks phone and password and returns an auth token
    """

    def create(self, request):
        """ 
        Checks phone and password and returns an auth token
        """
        lang = request.META.get('HTTP_LANG', 'ar')
        if CustomUser.objects.filter(phone=request.data['phone']).exists():
            user = CustomUser.objects.get(phone=request.data['phone'])
            if user.check_password(request.data['password']):
                token, created = Token.objects.get_or_create(user=user)
                return Response({'success': True, 'token': token.key, 'user': CustomUserSerializer(user).data, "message": 'تم تسجيل الدخول بنجاح' if lang == 'ar' else 'Login Successfully'})
            else:
                return Response({'success': False, 'message': 'كلمة المرور غير صحيحة' if lang == 'ar' else 'Wrong Password'})
        else:
            return Response({'success': False, 'message': 'هذا الرقم غير مسجل' if lang == 'ar' else 'This number is not registered'})

в этой строке возникает проблема if user.check_password(request.data['password']):, так как она всегда False

Вернуться на верх