Ошибка значения при регистрации пользователя в Django

В моем мобильном приложении, когда я пытаюсь зарегистрировать пользователя в бэкенде Django, я получаю "ValueError: Cannot query "user@example.com": Должен быть экземпляр "User"."

Вот сериализатор (django):

class UserSerializer(serializers.ModelSerializer):
    friends = serializers.SerializerMethodField()

    class Meta:
        model = User
        fields = ['id', 'name', 'email', 'date', 'password', 'profile_picture', 'friends']
        extra_kwargs = {'password': {'write_only': True, 'required': True}}

    def get_friends(self, obj):
        return [friend.email for friend in obj.get_friends()]

    def create(self, validated_data):
        user = User.objects.create_user(**validated_data)
        user.save()
        print(user)
        print(type(user))
        Token.objects.get_or_create(user=user)
        print("user created")
        return user

Вот react native, в котором я отправляю post-запрос на сервер.

const [name, setName] = useState('');
    const [email, setEmail] = useState('');
    const [password, setPassword] = useState('');

    const onChange = (field, value) => {
        if (field === 'name') setName(value);
        else if (field === 'email') setEmail(value);
        else if (field === 'password') setPassword(value);
    };

    const onSubmit = async () => {
        try {
            let response = await fetch('http://localhost:8000/api/users', {
                method: 'POST',
                headers: {
                    Accept: 'application/json',
                    'Content-Type': 'application/json',
                },
                body: JSON.stringify({
                    name: name,
                    email: email,
                    password: password,
                }),
            });

            let json = await response.json();
            console.log("JSON response:", json);

            if (response.status === 201) {
                // Registration successful
                // You can dispatch a success action here
                console.log("Registration Successful");
            } else {
                // Registration failed
                // You can dispatch a failure action here
                console.log("Registration failed", json);
            }
        } catch (error) {
            console.error(error);
        }
    };

Вот представление, в котором выполняется запрос.

class UserView(APIView):
    def post(self, request):
        print(request.data)
        serializer = UserSerializer(data=request.data)

        if serializer.is_valid():
            print("serializer is valid")
            serializer.save()
            token = Token.objects.get(user_id=serializer.data.get('id'))
            return Response(data={'token': token.key}, status=status.HTTP_201_CREATED)
        else:
            print("serializer is not valid")
            print(serializer.errors)
            return Response(data=serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Проблем с отправкой POST-запроса нет, сервер получает post-запрос по нужному url. Проблема заключается в методе create сериализатора.

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