Django POST-запрос 500 Ошибка: AttributeError: объект 'QuerySet' не имеет атрибута '_meta'

Я пытаюсь создать POST-запрос для добавления пользователя в базу данных, но получаю ошибку 500 с таким сообщением: AttributeError: 'QuerySet' object has no attribute '_meta'. Вот мой код:

@api_view(['POST'])
def register(request):
    data = request.data

    if data['password'] != data['password_confirm']:
        raise exceptions.APIException('Passwords do not match')

    serializer = UserSerializer(data=data)
    serializer.is_valid(raise_exception=True)
    serializer.save()
    return Response(serializer.data)

UserSerializer:

from rest_framework import serializers

from users.models import User


class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User.objects.all()
        fields = ['id', 'first_name', 'last_name', 'email', 'password']
        extra_kwargs = {'password': {'write_only': True}}

Пользователь:

from django.db import models


# Create your models here.
class User(models.Model):
    first_name = models.CharField(max_length=63)
    last_name = models.CharField(max_length=63)
    email = models.CharField(max_length=255, unique=True)
    password = models.CharField(max_length=255)

Вот трассировка стека:

Internal Server Error: /api/register
Traceback (most recent call last):
  File "/home/amicharski/.local/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/home/amicharski/.local/lib/python3.8/site-packages/django/core/handlers/base.py", line 179, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/amicharski/.local/lib/python3.8/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "/home/amicharski/.local/lib/python3.8/site-packages/django/views/generic/base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/rest_framework/views.py", line 509, in dispatch
    response = self.handle_exception(exc)
  File "/usr/local/lib/python3.8/dist-packages/rest_framework/views.py", line 469, in handle_exception
    self.raise_uncaught_exception(exc)
  File "/usr/local/lib/python3.8/dist-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
    raise exc
  File "/usr/local/lib/python3.8/dist-packages/rest_framework/views.py", line 506, in dispatch
    response = handler(request, *args, **kwargs)
  File "/usr/local/lib/python3.8/dist-packages/rest_framework/decorators.py", line 50, in handler
    return func(*args, **kwargs)
  File "/home/amicharski/PycharmProjects/admin/users/views.py", line 16, in register
    serializer.is_valid(raise_exception=True)
  File "/usr/local/lib/python3.8/dist-packages/rest_framework/serializers.py", line 220, in is_valid
    self._validated_data = self.run_validation(self.initial_data)
  File "/usr/local/lib/python3.8/dist-packages/rest_framework/serializers.py", line 419, in run_validation
    value = self.to_internal_value(data)
  File "/usr/local/lib/python3.8/dist-packages/rest_framework/serializers.py", line 472, in to_internal_value
    for field in fields:
  File "/usr/local/lib/python3.8/dist-packages/rest_framework/serializers.py", line 355, in _writable_fields
    for field in self.fields.values():
  File "/home/amicharski/.local/lib/python3.8/site-packages/django/utils/functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "/usr/local/lib/python3.8/dist-packages/rest_framework/serializers.py", line 349, in fields
    for key, value in self.get_fields().items():
  File "/usr/local/lib/python3.8/dist-packages/rest_framework/serializers.py", line 1028, in get_fields
    info = model_meta.get_field_info(model)
  File "/usr/local/lib/python3.8/dist-packages/rest_framework/utils/model_meta.py", line 35, in get_field_info
    opts = model._meta.concrete_model._meta
AttributeError: 'QuerySet' object has no attribute '_meta'

Это те ошибки, на решение которых уходит 8 часов, но решение заключается в изменении 1 строки кода. Мне просто пришлось сократить User.objects.all() в serializers.py в строке 8 просто до User, так что строка 8 теперь: model = User.

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