2016-06-04 21 views
5

Kullanıcıyı kaydetmeyi ve jetonu ve kullanıcı kimliğini döndürmeyi denerim. BuDjango Rest Framework - kayıttan sonra kullanıcı kimliğini ve belirtecini döndürün

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) 

gibi yapmak Ve bir hatayı yanlış yapıyorum

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 

olsun?

cevap

3

hata senin User modeline user adında hiçbir alan,

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

Öncelikle uyumludur. İkinci olarak, serializer.instance numaralı telefona sahip olan kullanıcıyı halihazırda kullanıcı olarak almak için User modeline filtre uygulamanıza gerek yoktur. Yani, bu hatta gerek yok.

Sadece id numaralı telefonu kullanmak istiyorsanız, serializer.instance.id'u kullanabilirsiniz.

+1

Evet, bu harika çalışıyor, teşekkürler! –

İlgili konular