ListSerializer使用

上代码

class TrackListSerializer(serializers.ListSerializer):
    def create(self, validated_data):
      #validated_data会返回所有请求数组,而不是单个对象
        print(validated_data)
        books = [Track(**item) for item in validated_data]
        return Track.objects.bulk_create(books)
    def to_internal_value(self, data):
        print('to_internal_value',data)
        return data.get('data')
class TrackSerializer(serializers.ModelSerializer):
    # album = AlbumField(queryset=Album.objects.all())

    class AlbumSerilaizer(serializers.ModelSerializer):
        class Meta:
            model = Album
            fields = "__all__"
    album = AlbumSerilaizer(many=False,read_only=True)
    class Meta:
        model = Track
        fields = "__all__"
        list_serializer_class = TrackListSerializer

viewset

class RouterViewSet(viewsets.ModelViewSet):
    authentication_classes = ()
    serializer_class = TrackSerializer
    queryset = Track.objects.all()
    
        def create(self, request, *args, **kwargs):
        data = request.data.get('data')
        
        if isinstance(data,dict):
            return super().create(request,*args,**kwargs)

        elif isinstance(data,list):
# 当many=True时,TrackSerializer会直接调用list_serializer_class属性
            ser=TrackSerializer(many=True,data=request.data)
            if ser.is_valid():
                ser.save()
            return Response(ser.data)
请求参数
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • error code(错误代码)=2000是无效的像素格式。error code(错误代码)=2001是指定的驱动...
    Heikki_阅读 6,177评论 0 4
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,966评论 25 709
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,711评论 0 13
  • 大凡有过一定阅历的人,会慢慢变得稳重起来。 这个稳重,其实就是一种适可而止。 知道话要说的刚刚好,事要做的刚刚好。...
    青云风阅读 3,471评论 0 2
  • 先说一个老掉牙的故事: 一个农夫无意间发现一只会生金蛋的鹅,不久便成了富翁。可是财富却使他变得更贪婪更急躁,每天一...
    宋文峰阅读 8,488评论 0 9

友情链接更多精彩内容