Я новичок с django rest framework, у меня есть этот код для обновления сообщения с несколькими изображениями, но загрузка нескольких изображений не работает должным образом, и изображение не сохраняется. Создавая пост, я смог заставить работу с несколькими загрузками работать нормально. Как я могу заставить этот сериализатор принимать несколько изображений?
Спасибо! Помощь будет очень принята.
сериализатор
class PostImageSerializer(serializers.ModelSerializer):
class Meta:
model = PostImage
fields = ['id', 'images',]
class PostUpdateSerializer(serializers.ModelSerializer):
images = serializers.ListField(child=serializers.ImageField(allow_empty_file=True))
class Meta:
model = Post
fields = ['id','title', 'image', 'images',] #images is from another model POSTIMAGE
def validate(self, post):
try:
title = post['title']
image = post['image']
images = post['images']
except KeyError:
pass
return post
просмотров.
def update_post_api_view(request, slug):
if request.method == 'GET':
try:
post = Post.objects.get(slug=slug)
except Post.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
serializer = PostSerializer(post)
return Response(serializer.data, status=status.HTTP_200_OK)
if request.method == 'PUT':
try:
post = Post.objects.get(slug=slug)
except Post.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
user = request.user
if post.user != user:
return Response({'response': "You can't edit the post!"})
serializer = PostUpdateSerializer(post, data=request.data, partial=True)
if serializer.is_valid():
serializer.save()
data = {
'success': 'update successful',
}
return Response(data=data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Это модель ..
class Post(models.Model):
title = models.TextField(max_length=5000, blank=False, null=False)
image = models.ImageField(upload_to='posts/postimage/', null=True)
post_date = models.DateTimeField(auto_now_add=True, verbose_name="Date Posted")
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
slug = models.SlugField(blank=True, unique=True, max_length=255)
class PostImage(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE)
images = models.ImageField(upload_to='posts/postimage/')