Django REST Framework图片上传接口Postman请求报错问题求助
问题排查及修复方案
- 错误1:PostImageSerializer字段配置错误
原代码中fields = ('image')不属于元组格式,单个元素的元组必须添加末尾逗号,否则DRF会将其识别为字符串,抛出字段匹配错误。修复后代码如下:class PostImageSerializer(serializers.ModelSerializer): class Meta: model = PostImage fields = ('image',) - 错误2:PostSerializer的create方法逻辑异常
原代码先后调用super().create()和Post.objects.create()重复创建了Post实例,且直接将request.FILES传入多对多关联的add方法,没有先生成PostImage实例就尝试关联,必然报错。
修复逻辑为:先创建Post实例,再逐个处理上传的图片生成PostImage对象,最后完成多对多关联,修复后代码如下:def create(self, validated_data): # 从请求中提取所有上传的图片文件 images_data = self.context['request'].FILES.getlist('image') # 移除image字段,避免默认序列化逻辑报错 validated_data.pop('image', None) # 仅创建一次Post实例 post = super().create(validated_data) # 逐个生成PostImage实例后关联到Post对象 for img_file in images_data: post_image = PostImage.objects.create(image=img_file) post.image.add(post_image) post.save() return post - 错误3:Postman请求配置修正
- 请求方法选择POST,不要手动设置Content-Type请求头,让Postman自动生成multipart/form-data的边界参数
- Body选择form-data格式,
content字段填写文本内容,image字段类型选择File,多次添加同一个image的File值即可上传多张图片
内容的提问来源于stack exchange,提问作者Peter Evance
相关产品推荐
相关产品推荐

