Проблемы с валидатором сериализатора не позволяют отправить данные

В этом вопросе у меня была проблема с передачей пользователя в сериализатор, которая была решена, но теперь я столкнулся с другой проблемой, что валидатор сериализатора перестает передавать информацию о пользователе и думает, что я собираюсь создать нового пользователя.

views.py

class ProfileView(generics.RetrieveAPIView):
    permission_classes = (IsAuthenticated,)
    serializer_class = UserSerializer

    def retrieve(self, request, *args, **kwargs):
        serializer = self.serializer_class(data=model_to_dict(request.user))
        if serializer.is_valid():
            return successful_response(
                messages=_('User Profile'),
                data=serializer.data
            )
        return unsuccessful_response(errors=serializer.errors, status_code=status.HTTP_404_NOT_FOUND)

Мой класс модели пользователя:

class User(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(_('email address'), unique=True)
    .....
    USERNAME_FIELD = 'email'
    ....

ошибки:

{
    "errors": {
        "email": [
            "user with this email address already exists."
        ]
    }
}

Я понял, где была проблема, мне следовало использовать get_serializer вместо get_serializer_class. В этом случае нет необходимости в валидации.

class ProfileView(generics.RetrieveAPIView):
    permission_classes = (IsAuthenticated,)
    serializer_class = UserSerializer

    def retrieve(self, request, *args, **kwargs):
        serializer = self.get_serializer(request.user)
        return successful_response(
            messages=_('User Profile'),
            data=serializer.data
        )
Вернуться на верх