Я новичок в 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."\]}