Authenticate return none для пользовательской модели пользователя django rest framework

Я пытаюсь использовать электронную почту вместо имени пользователя для входа в систему в django-rest-framework. но authenticate(request, email=email, password=password) всегда возвращает None. Я пробовал много способов, но всегда возвращается None. кто-нибудь может помочь мне решить эту проблему?

Модель

class CustomUser(BaseUserManager):
    def create_superuser(self,user_name, email, phone, password,**other_fields):
        other_fields.setdefault('is_superuser', True)
        other_fields.setdefault('is_staff', True)
        other_fields.setdefault('is_active', True)
        
        if other_fields.get('is_staff') is not True:
            raise ValueError('Superuser must be assigned to is_staff=True')
        
        if other_fields.get('is_superuser') is not True:
            raise ValueError('Superuser must be assigned to is_superuser=True')
        
        return self.create_user(user_name, email, phone, password, **other_fields)
    
    
        
        
    def create_user(self, user_name, email, phone, password, **other_fields):
        if not email:
            raise ValueError(gettext_lazy('Email is required'))
        other_fields.setdefault('is_active', True)
        email = self.normalize_email(email)
        user = self.model(user_name=user_name, email=email, phone=phone, **other_fields)
        user.set_password(password)
        user.save()
        return user


class Profile(AbstractBaseUser, PermissionsMixin):
    user_name = models.CharField(unique=True, max_length=255)
    email = models.EmailField(gettext_lazy('email address'), unique=True)
    password = models.CharField(null=False, max_length=2000)
    phone = models.CharField(max_length=30)
    register_date = models.DateTimeField(default=timezone.now)
    is_varified = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)

    objects = CustomUser()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['user_name', 'phone']

сериализатор

class RegisterSerializer(serializers.ModelSerializer):
    
    class Meta:
        model = Profile
        fields = ['email', 'user_name', 'password','phone']
        extra_kwargs = {
                'password': {'write_only': True}
        }

Вид

class RegisterView(APIView):
    def post(self, request):
        serializer = RegisterSerializer(data= request.data)
        if serializer.is_valid():
            serializer.save()
            email = serializer.data.get('email')
            password = serializer.data.get('password')
            user = authenticate(request, email=email, password=password)
            print(user, email, password)
            # login(request, request.data)
            return Response(serializer.data)
        return Response("error")

settings

AUTH_USER_MODEL = 'myapp.Profile'

AUTHENTICATION_BACKENDS = (
        'django.contrib.auth.backends.ModelBackend',
)
Вернуться на верх