【发布时间】:2020-08-06 07:23:28
【问题描述】:
我是 django rest 框架的初学者,我有这段代码来更新包含多张图片的帖子,但是上传多张图片无法正常工作并且图片没有被保存。在创建帖子时,我能够使多个上传部分正常工作。我怎样才能让这个序列化程序接收多个图像?
谢谢!非常感谢您的帮助。
序列化器
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/')
【问题讨论】:
-
您的
Post和PostImage模型看起来如何? -
嘿,我已经更新了两个模型的问题。
标签: django django-models django-rest-framework django-forms django-views