Serializer user "Неверные данные. Ожидался словарь, а получил User"

Я пытаюсь отобразить поля моей пользовательской модели, но постоянно получаю сообщение, что мой сериализатор не действителен { "non_field_errors": [ "Неверные данные. Ожидали словарь, а получили User." ] }

это моя модель

from django.db import models
from django.contrib.auth.models import BaseUserManager, AbstractBaseUser, PermissionsMixin


class UserManager(BaseUserManager):
    def _create_user(self, username, password, is_staff, is_superuser, **extra_fields):
        user = self.model(
        username=username,
        is_staff=is_staff,
        is_superuser=is_superuser,
        **extra_fields
    )
    user.set_password(password)
    user.save(using=self.db)
    return user

def create_user(self, username, password=None, **extra_fields):
    return self._create_user(username, password, False, False, **extra_fields)

def create_superuser(self, username, password=None, **extra_fields):
    return self._create_user(username, password, True, True, **extra_fields)


class User(AbstractBaseUser, PermissionsMixin):
    username = models.CharField(max_length=255, unique=True)
    email = models.EmailField( max_length=255, blank=True, null=True)
    name = models.CharField(max_length=255, blank=True, null=True)
    age = models.PositiveIntegerField()
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)
    objects = UserManager()

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = []

    def __str__(self):
       return f"{self.id} {self.name} {self.username} {self.age}"

это мой сериализатор

class UserUpdateSerializer(serializers.ModelSerializer):
class Meta:
    model = User
    fields = ['id', 'email', 'username', 'name', 'age']

это мое мнение

class UserUpdateApiView(APIView):
    def get(self, request, pk):
        try:
            queryset = User.objects.get(pk=pk)
            serializer = UserUpdateSerializer(data=queryset)
            if serializer.is_valid(raise_exception=True):
                return Response(data=serializer.data)
        except User.DoesNotExist:
            return Response(data={"error": "User no found"}, status=status.HTTP_404_NOT_FOUND)

Вы использовали ключевой аргумент data, я думаю, что проблема здесь. Передайте набор запросов без аргумента ключевого слова:

class UserUpdateApiView(APIView):
    def get(self, request, pk):
        try:
            queryset = User.objects.get(pk=pk)
            serializer = UserUpdateSerializer(queryset)
            return Response(serializer.data)
        except User.DoesNotExist:
            return Response(data={"error": "User no found"}, status=status.HTTP_404_NOT_FOUND)

data - это сериализованный вывод на самом деле. Аргумент ключевого слова для передачи входных данных модели называется instance Я полагаю

Вернуться на верх