Создание объекта во вложенном сериализаторе дает ошибку плохого запроса "требуется владелец"?

Я впервые имею дело с вложенными сериализаторами и он выдает мне ошибку "owner" is required while creating a post. Почему так?

class CreatePostView(APIView):
    permission_classes = [IsAuthenticated]
    parser_classes = [MultiPartParser]

    def post(self, request, *args):
        user = request.user
        data = request.data
        data['owner'] = user
        print(data)
        serializer = PostSerializer(data=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)

PostSerializer:

class PostSerializer(serializers.ModelSerializer):
    owner = UserSerializer()
    comments = CommentSerializer(many=True, read_only=True)
    class Meta:
        model= Post
        fields = ("id", "img", "posted_at", "caption", "owner", "comments")

Постовая модель:

class Post(models.Model):
    owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name="posts")
    img = models.ImageField(upload_to=post_img_url, default="default.jpg", max_length=200)
    caption = models.CharField(max_length=100, null=True, blank=True)
    posted_at = models.DateTimeField(auto_now_add=True, blank=True)

    objects = models.Manager()
    current_user_posts = CurrentUsersPosts.as_manager()

    class Meta:
        ordering = ("-posted_at",)

    def __str__(self):
        return f"{self.img} posted by {self.owner} at {self.posted_at}"

console:

<QueryDict: {'owner': [], 'img': [<InMemoryUploadedFile: treeHouse.jpg (image/jpeg)>]}> Bad Request: /api/posts/upload/ [02/Aug/2022 11:14:01] "POST /api/posts/upload/ HTTP/1.1" 400 37

.

Вам не следует изменять request.data, вместо этого сделайте следующее:

if serializer.isvalid():
    serializer.save(owner=request.user)
Вернуться на верх