序列化组件

序列化组件:

  --Serializer

    1、重命名:用source:   xx = serializers.CharField(source='name')

    2、取出版社名字:

        方式一:

           -在模型表中重写__str__方法

           -publish=serializers.CharField()

        方式二:

           -用source

              -拿出出版社的城市

           -publish=serializers.CharField(source='publish.city')

    *****如果不指定source,字段必须对应起来,如果指定了source,字段可以任意命名

    -source 可以指定字段,也可也指定方法

       publish.test这是个方法,会执行该方法,并拿到返回结果

       test = serializers.CharField(source='publish.test')

    -3 SerializerMethodField,可以指定一个方法

       publish=serializers.SerializerMethodField()

       # 方法名:叫get_字段名,要传参数,参数是:当前book对象

       def get_publish(self,obj):

         # obj 是当前book对象

        dic={'name':obj.publish.name,'email':obj.publish.email}

            return dic

       -方法内部可以继续用其他的序列化类

    -ModelSerializer

       -必须在类中写

       class Meta:

         model=指定表

              # fields = '__all__'

                # 指定只取这两个字段

         fields = ['nid','name']

         # 去掉指定的字段

         # exclude=['publish','authors']

         # fields,跟exclude不能连用

         # 指定深度,就是跨几个表(官方建议小于10,我给你的建议小于3)

         # depth = 2


#生成一个序列化的对象,传参数 
#序列化多条,记住many=True
book_ser=BookSerializer(ret,many=True)



      

原文地址:https://www.cnblogs.com/zhouhao123/p/10103518.html