Объект типа 'AuthToken' не сериализуем в формате JSON - PullRequest
0 голосов
/ 13 апреля 2019

Я получаю вышеуказанную ошибку при создании токена, вот код:

from rest_framework import generics, permissions
from rest_framework.response import Response 
from knox.models import AuthToken
from .serializers import UserSerializer, RegisterSerializer

class RegisterAPI(generics.GenericAPIView):
    serializer_class = RegisterSerializer

def post(self, request, *args, **kwargs):
    serializer = self.get_serializer(data=request.data)
    serializer.is_valid(raise_exception=True)
    user = serializer.save()
    return Response({
        "user": UserSerializer(user, context=self.get_serializer_context()).data,
        "token": AuthToken.objects.create(user)
    })

что я тут делаю не так

Ответы [ 2 ]

6 голосов
/ 27 апреля 2019

Token.objects.create возвращает кортеж (экземпляр, токен). Поэтому для получения токена используйте индекс 1

"token": AuthToken.objects.create(user)[1]

0 голосов
/ 01 июля 2019

Лучше использовать этот метод в Python

_, token = AuthToken.objects.create(user)
return Response({
    "user": UserSerializer(user, context=self.get_serializer_context()).data,
    "token": token
})
...