溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

rest_framework序列化組件

發(fā)布時(shí)間:2020-07-22 10:17:36 來源:網(wǎng)絡(luò) 閱讀:296 作者:fushuanglin 欄目:編程語言

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,可以指定一個(gè)方法

#     # publish=serializers.SerializerMethodField()

#     # # 方法名:叫g(shù)et_字段名,要傳參數(shù),參數(shù)是:當(dāng)前book對(duì)象

#     # def get_publish(self,obj):

#     #     # obj 是當(dāng)前book對(duì)象0

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

#     #     return dic

#     authors=serializers.SerializerMethodField()

#     # def get_authors(self,book):

#     #     #拿到這本書的所有作者

#     #     aus=book.authors.all()

#     #     # 拼出一個(gè)列表,列表中套字典,每個(gè)字典是一個(gè)作者

#     #     ll=[]

#     #     for a in aus:

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

#     #     return ll

#     def get_authors(self,book):

#         #拿到這本書的所有作者

#         aus=book.authors.all()

#         # 可以繼續(xù)用序列化類,來處理

#         auth_ser=AuthorSerializer(aus,many=True)

#         return auth_ser.data

from ap01.models import Book



# class BookSerializer(serializers.ModelSerializer):

#     # 必須寫一個(gè)內(nèi)部類,名字叫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()

#         # 可以繼續(xù)用序列化類,來處理

#         auth_ser = AuthorSerializer(aus, many=True)

#         return auth_ser.data



class BookSerializer(serializers.ModelSerializer):

    # 必須寫一個(gè)內(nèi)部類,名字叫Meta

    class Meta:

        model = Book

        # fields = '__all__'

        # 指定只取這兩個(gè)字段

        fields = ['nid','name']

        # 去掉指定的字段

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

        # fields,跟exclude不能連用

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

        # depth = 2


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI