日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

rest_framework04:ModelSerializer/Serializer高级用法

發布時間:2023/12/4 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rest_framework04:ModelSerializer/Serializer高级用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ModelSerializer

1.減小序列化類代碼

2.不需要重寫update,create

ser.py

class BookModelSerializer(serializers.ModelSerializer):class Meta:model=Bookfields='__all__' #序列化全部字段# fields=('name','price') # 序列化指定字段# exclude=('name',) # 與fields 不能共用 用于排除某個字段

views.py 書寫格式與原來一樣,只修改方法名字。

class BooksView2(APIView):def get(self, request):response=MyResponse()books = Book.objects.all()book_ser = BookModelSerializer(books, many=True) # 序列化多條。 如果一條,不需要寫response.data = book_ser.datareturn Response(response.get_dic)def post(self, request):response=MyResponse()# 新增沒有instance,只有databook_ser = BookModelSerializer(data=request.data)# 如果沒有data=,會報錯。第一個參數是instance# book_ser = BookSerializer(request.data)# 校驗字段if book_ser.is_valid():book_ser.save()response.data = book_ser.dataelse:response.status = 102response.msg = '新增數據校驗失敗'response.data = book_ser.datareturn Response(response.get_dic)

高級用法

source

1.可以該字段名

title_name=serializers.CharField(source='title')

2.可以用"."進行跨表

# 調用 book.publish,直接.publish,所以需要Publish里定義 __str__方法 publish=serializers.CharField()# 可以理解source 隱藏book.字段。publish = serializers.CharField(source='publish.email')

3.可以執行方法

# test為book類里定義的方法 title=serializers.CharField(source='test')

SerializerMethodField()

需要配套方法,方法名叫 get_字段名 返回值就是要顯示的東西

# 需要配套方法,方法名叫 get_字段名 返回值就是要顯示的東西authors=serializers.SerializerMethodField()def get_authors(self,instance):# book 對象authors=instance.authors.all()ll=[]for author in authors:ll.append({'name':author.name,'age':author.age})return ll

總結

以上是生活随笔為你收集整理的rest_framework04:ModelSerializer/Serializer高级用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。