You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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请求配置修正
    1. 请求方法选择POST,不要手动设置Content-Type请求头,让Postman自动生成multipart/form-data的边界参数
    2. Body选择form-data格式,content字段填写文本内容,image字段类型选择File,多次添加同一个image的File值即可上传多张图片

内容的提问来源于stack exchange,提问作者Peter Evance

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 07:15:02