小编Ihn*_*Kim的帖子

Django Rest Framework - 使用 ModelSerializer 和 ModelViewSet 更新相关模型

背景

我有两个序列化器:PostSerializerPostImageSerializer,它们都继承了 DRF ModelSerializer。PostImage 模型通过 related_name='photos' 与 Post 相关联。

由于我希望序列化程序执行update,PostSerializer 覆盖 ModelSerializer 中的 update() 方法,如官方 DRF 文档中所述。

class PostSerializer(serializers.ModelSerializer):
    photos = PostImageSerializer(many=True)

    class Meta:
        model = Post
        fields = ('title', 'content')

    def update(self, instance, validated_data):
        photos_data = validated_data.pop('photos')
        for photo in photos_data:
            PostImage.objects.create(post=instance, image=photo)
        return super(PostSerializer, self).update(instance, validated_data)

class PostImageSerializer(serializer.ModelSerializer):
    class Meta:
        model = PostImage
        fields = ('image', 'post')
Run Code Online (Sandbox Code Playgroud)

我还定义了一个继承ModelViewSet 的 ViewSet

 class PostViewSet(viewsets.ModelViewSet):
        queryset = Post.objects.all()
        serializer_class = PostSerializer
Run Code Online (Sandbox Code Playgroud)

最后 PostViewSet …

python django django-rest-framework

5
推荐指数
2
解决办法
8077
查看次数

标签 统计

django ×1

django-rest-framework ×1

python ×1