Ошибка при обновлении простого поля отношения один к одному в Django -rest-framework - PullRequest
0 голосов
/ 18 апреля 2020

Я новичок в Django и имею базовые знания c о python. Я пытаюсь создать и простые отношения между двумя моделями, т.е. пользователем и профилем. Я определил пользовательскую модель Django, и моя модель профиля: `` * python

  class Profile(models.Model):
        user = models.OneToOneField(User, on_delete=models.CASCADE)
        image = models.ImageField(default='defaultProfileImg.png',             
        upload_to='_profile_img')
        first_name = models.CharField(max_length=60, blank=True)
        last_name = models.CharField(max_length=60, blank=True)
        description = models.CharField(max_length=60, blank=True)
        mobile = models.CharField(max_length=60, blank=True)
        current_location = models.CharField(max_length=60, blank=True)

Сериализатор профиля -

class ProfileSerializer(serializers.ModelSerializer):
        user_id = serializers.IntegerField(source='user.id')
        class Meta:
            model = Profile
            fields= ('user','image', 'first_name', 'last_name', 
            'description','mobile', 'current_location', 'user_id')
            def update(self, instance, validated_data):

            user_data = validated_data.pop('user')
            user = UserRegistration.create(UserSerializer(), 
            validated_data=user_data)
            created, profile = Profile.objects.update_or_create(user=user,
                                subject_major=validated_data.pop('subject_major'))


            return  profile 

, и мой взгляд

class ProfileViewSet(APIView):
    # to find if isAuthenticate then
    authentication_classes = (TokenAuthentication,)
    permission_classes = [permissions.IsAuthenticated]

    def get(self,  request):
        serializer = ProfileSerializer(request.user.profile)
        return Response({
            'profile': serializer.data
        })

    def put(self, request, pk, format=None):
        # update user profile
         saved_article = get_object_or_404(User.objects.all(), pk=pk)
         serializer = ProfileSerializer(data=request.data)
         print('request.data', request.data)
         if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
         return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)

Я получаю следующую ошибку

{"user": \["Incorrect type. Expected pk value, received dict."\]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...