2016-06-04 9 views
5

Provo a registrare utente e restituire token e ID utente. Facendo in questo modoDjango Rest Framework - ID utente e token restituiti dopo la registrazione

from django.shortcuts import render 
from rest_framework.response import Response 
from rest_framework.authtoken.models import Token 
from rest_framework import status 
from django.contrib.auth import get_user_model 

User = get_user_model() 

class CreateUser(CreateAPIView): 
    queryset = Profile.objects.all() 
    serializer_class = UserSerializer 

    def create(self, request, *args, **kwargs): 
     serializer = self.get_serializer(data=request.data) 
     serializer.is_valid(raise_exception=True) 
     self.perform_create(serializer) 
     headers = self.get_success_headers(serializer.data) 
     token, created = Token.objects.get_or_create(user=serializer.instance) 
     user = User.objects.filter(user=serializer.instance) 
     return Response({'token': token.key, 'id':user.id}, status=status.HTTP_201_CREATED, headers=headers) 

E ho un errore

Cannot resolve keyword "user" into field. Choices are: auth_token, date_joined, email, first_name, groups, id, is_active, is_staff, is_superuser, last_login, last_name, logentry, password, user_permissions, username 

Che cosa sto facendo di sbagliato?

risposta

3

L'errore è nella linea

user = User.objects.filter(user=serializer.instance) 

In primo luogo, non v'è alcun campo denominato user del modello User. In secondo luogo, non è necessario filtrare il modello User per ottenere l'utente creato come già l'utente con te in serializer.instance. Quindi, non c'è bisogno di quella linea.

Se si desidera solo il, è possibile ottenere che utilizzando serializer.instance.id.

+1

Sì, funziona benissimo, grazie! –