Как сериализовать текущего пользователя в django rest framework?
Я написал пользовательского пользователя и определил для него сериализатор, и теперь у меня есть конечная точка, которой пользователь отправил запрос get. Он должен получить информацию о пользователе в формате json. И поскольку мой формат ответа следующий
{
'messages': msg,
'data': data
}
Я не знаю, как сериализовать пользователя или какое общее представление использовать мой код:
class ProfileView(generics.RetrieveAPIView):
permission_classes = (IsAuthenticated,)
serializer_class = UserSerializer
def retrieve(self, request, *args, **kwargs):
serializer = self.serializer_class(data=request.user)
if serializer.is_valid():
return successful_response(
messages=_('User Profile'),
data=serializer.data
)
return unsuccessful_response(serializer.errors)
и ошибка, которую я получаю:
{
"errors": {
"non_field_errors": [
"Invalid data. Expected a dictionary, but got User."
]
}
}
У кого-нибудь есть идея?
Вам, вероятно, нужно преобразовать "экземпляр пользователя" в словарь я предлагаю сделать это:
from django.forms.models import model_to_dict #this line
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))# instance converted to dict
if serializer.is_valid():
return successful_response(
messages=_('User Profile'),
data=serializer.data
)
return unsuccessful_response(serializer.errors)