Фреймворк Django. остальное - возвращает идентификатор пользователя и маркер после регистрации

Я пытаюсь зарегистрировать пользователя и вернуть токен и идентификатор пользователя. Делать это так

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)

и я получаю ошибку

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

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

1 ответов


ошибка в строке

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

во-первых, нет поля с именем user на User модель. Во-вторых, вам не нужно фильтровать на User модель, чтобы получить создано пользователей как у вас уже есть пользователь с вами serializer.instance. Так что в этом нет необходимости.

если ты хочешь id, вы можете сделать это с помощью serializer.instance.id.