Проблемы с валидатором сериализатора не позволяют отправить данные
В этом вопросе у меня была проблема с передачей пользователя в сериализатор, которая была решена, но теперь я столкнулся с другой проблемой, что валидатор сериализатора перестает передавать информацию о пользователе и думает, что я собираюсь создать нового пользователя.
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
)