Загрузка изображения/изображений на 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()
Переработали метод 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