rest_framework序列化组件

from rest_framework import serializers

目前创新互联已为千余家的企业提供了网站建设、域名、虚拟空间、网站运营、企业网站设计、宣城网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

class AuthorSerializer(serializers.Serializer):

    nid = serializers.CharField()

    name = serializers.CharField()

    age = serializers.CharField()

# class BookSerializer(serializers.Serializer):

#     # 可以用source修改别名

#     xx = serializers.CharField(source='name')

#     price = serializers.CharField()

#     sb = serializers.CharField(source='publish.city')

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

#     publish_id = serializers.CharField()

#     # SerializerMethodField,可以指定一个方法

#     # publish=serializers.SerializerMethodField()

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

#     # def get_publish(self,obj):

#     #     # obj 是当前book对象0

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

#     #     return dic

#     authors=serializers.SerializerMethodField()

#     # def get_authors(self,book):

#     #     #拿到这本书的所有作者

#     #     aus=book.authors.all()

#     #     # 拼出一个列表,列表中套字典,每个字典是一个作者

#     #     ll=[]

#     #     for a in aus:

#     #         ll.append({'name':a.name,'age':a.age})

#     #     return ll

#     def get_authors(self,book):

#         #拿到这本书的所有作者

#         aus=book.authors.all()

#         # 可以继续用序列化类,来处理

#         auth_ser=AuthorSerializer(aus,many=True)

#         return auth_ser.data

from ap01.models import Book

# class BookSerializer(serializers.ModelSerializer):

#     # 必须写一个内部类,名字叫Meta

#     class Meta:

#         model = Book

#         fields = '__all__'

#     # 重写属性

#     publish = serializers.CharField(source='publish.name')

#     authors = serializers.SerializerMethodField()

#     def get_authors(self, book):

#         # 拿到这本书的所有作者

#         aus = book.authors.all()

#         # 可以继续用序列化类,来处理

#         auth_ser = AuthorSerializer(aus, many=True)

#         return auth_ser.data

class BookSerializer(serializers.ModelSerializer):

    # 必须写一个内部类,名字叫Meta

    class Meta:

        model = Book

        # fields = '__all__'

        # 指定只取这两个字段

        fields = ['nid','name']

        # 去掉指定的字段

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

        # fields,跟exclude不能连用

        # 指定深度(官方建议小于10,我给你的建议小于3)

        # depth = 2


分享文章:rest_framework序列化组件
链接URL:http://pwwzsj.com/article/pssecc.html