rest_framework序列化组件
admin
2023-07-14 10:43:56
0

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


相关内容

热门资讯

问题居然在实体卡槽上!美版iP... 6月2日消息,日前,又有博主提前把还没发布的iPhone 18 Pro电池参数给曝光了出来,根据爆料...
2026年618手机购机攻略:... 每年618都是手机换新的最佳窗口期,2026年大促叠加数码国补、平台满减、品牌降价三重福利,新机老机...
8.99万打穿底价!史无前例的... 科技的浪漫,不是将人类送入遥不可及的星辰,而是把曾经高不可攀的科幻,变成柴米油盐里的“论斤卖”。 如...
苹果首款折叠屏iPhone U... PChome 6月2日消息,据知名数码博主@i冰宇宙最新曝光的机模谍照,苹果首款折叠屏手机(内部命名...
特朗普:美伊暂停谈判?假新闻! 当地时间6月2日,美国总统特朗普否认伊朗已停止与调解方沟通,称美国与伊朗之间的对话一直在持续进行。特...
白宫记协晚宴改期至7月,特朗普... 当地时间6月2日,美国总统特朗普表示,此前因突发暴力事件而中断的白宫记协晚宴已确定改期至7月24日举...
特朗普,开掉“不听话的情报头子... 苦撑15个月后,美国国家情报总监加巴德即将离开白宫。她对辞职的解释是:丈夫近期确诊罕见骨癌,自己希望...
面粉染头模仿黄仁勋,农村青年走... “先赔偿5000元肖像侵权使用费,再删除所有视频,要么就起诉你。”这是黄仁勋的模仿者杨洋最近频繁收到...
驻马店非遗“大集”开张 把网络... 顶端新闻记者 王丹/文 李思翰 胡楚昊/图红纸剪出“抵制网络谣言”,糖画写下“不信谣不传谣”……5月...
A股三大指数集体收涨 贵金属涨...   A股三大指数集体收涨 贵金属涨幅居前  【A股三大指数集体收涨 贵金属涨幅居前】6月2日,A股三...