Загрузка изображения/изображений на Django REST Framework

Я пытаюсь загрузить изображения на конечную точку в postman, но получаю ошибку, показанную на скриншоте ниже. Ниже приведен мой код, для краткости я отправлю только затронутые части.

Модели:

class Post(models.Model):    
    content = models.TextField() 
    image = models.ManyToManyField(PostImage,blank=True,related_name='posts_images')

class PostImage(models.Model):
    image = models.ImageField(upload_to='post-images',validators=[FileExtensionValidator(['png','jpg','gif','jpeg'])])

Сериализаторы:

class PostImageSerializer(serializers.ModelSerializer):
    class Meta:
        model = PostImage
        fields = ('image')

class PostSerializer(serializers.ModelSerializer):
    image = PostImageSerializer(many=True, required=False)
    class Meta:
        model = Post
        fields = ['content','image',]

    def create(self, validated_data):
        r_data = self.context['request'].FILES
        
        instance = super().create(validated_data)        
        if "image" in validated_data.keys():
            images = validated_data.pop('image')
        else:
            pass
        post = Post.objects.create(**validated_data)    
        instance.image.add(r_data)
        return post

Видовые установки :

class PostViewSet(ModelViewSet):
    serializer_class = PostSerializer
    queryset = Post.objects.all()

Postman response

Переработали метод create сериализатора, и теперь он работает

def create(self, validated_data):
        request = self.context['request']
        r_data = self.context['request'].FILES
            
        post = Post.objects.create(**validated_data)
        
        if 'image' in r_data:
            post_image = PostImage.objects.create(image=r_data['image'])
            post.image.add(post_image)
        else:
            pass
        return post
Вернуться на верх