Django Rest框架在序列化器中获取请求创建方法

我是一个学习Django rest框架的学生

我尝试上传带有表单数据的多个文件

当我在邮递员中发送这样的请求时

enter image description here

发生错误,这是错误消息

images_data = self.context.get('request')。request.FILES

AttributeError:“ NoneType”对象没有属性“ request”

这是模特

class Post(models.Model):
    text = models.CharField(max_length=5000)
    owner = models.ForeignKey(User,on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)

class Image(models.Model):
    post = models.ForeignKey(Post,on_delete=models.CASCADE)
    image = models.FileField(blank=True)

观点

class AddPost(APIView):
    serializer_class = PostSerializer

    def post(self,request,format=None):
        serializer = PostSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save()

        return JsonResponse({'status':status.HTTP_200_OK,'message':"sucess",'data':""})

序列化器

class FileSerializer(serializers.ModelSerializer):
    class Meta:
        model = Image
        fields = '__all__'

class PostSerializer(serializers.ModelSerializer):
    images = FileSerializer(source='image_set',many=True,read_only=True)

    class Meta:
        model = Post
        fields = ('id','text','owner','created_at','images')

    def create(self,validated_data):
        images_data = self.context.get('request').request.FILES         
        images_data = self.context.get('request').request.FILES
        post = Post.objects.create(text=validated_data.get('text'),owner=validated_data.get('owner'))
        for image_data in images_data.values():
            Image.objects.create(post=post,image=image_data)
        return post

我已经看到了此链接 https://codeday.me/en/qa/20190306/12057.html

感谢您的帮助

sytsoft 回答:Django Rest框架在序列化器中获取请求创建方法

只需在views.py中将上下文传递给序列化器

PostSerializer(data=request.data,context={'request': request})

然后您将能够在serializers.py

的上下文中获取请求。
self.context.get('request')
本文链接:https://www.f2er.com/3168775.html

大家都在问