2016-06-04 6 views
5

Ich versuche, Benutzer und Return-Token und Benutzer-ID zu registrieren. Tun es wie diesesDjango Rest Framework - Benutzer-ID und Token nach der Registrierung

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) 

Und ich erhalte eine Fehlermeldung

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 

Was mache ich falsch?

Antwort

3

Der Fehler ist in der Linie

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

Erstens gibt kein Feld user auf Ihrem User Modell benannt ist. Zweitens müssen Sie nicht nach dem Modell User filtern, um den erstellten Benutzer zu erhalten, da Sie den Benutzer bereits in serializer.instance haben. Also, es gibt keine Notwendigkeit für diese Linie.

Wenn Sie nur die id wollen, können Sie das mit serializer.instance.id bekommen.

+1

Ja, das funktioniert super, danke! –

Verwandte Themen