模型類序列化器ModelSerializer

2021-09-24 11:26:00 字數 1869 閱讀 1768

比如我們建立乙個bookinfoserializer

class bookinfoserializer(serializers.modelserializer):

「」「圖書資料序列化器」""

class meta:

model = bookinfo

fields = 『all

model指明參照哪個模型類

fields指明為模型類的哪些字段生成

我們可以在python manage.py shell中檢視自動生成的bookinfoserializer的具體實現

2.指定字段

1)使用欄位來明確字段,__all__表名包含所有字段,也可以寫明具體哪些字段,如

class bookinfoserializer(serializers.modelserializer):

「」「圖書資料序列化器」""

class meta:

model = bookinfo

fields = (『id』, 『btitle』, 『bpub_date』)

2)使用排除可以明確排除掉哪些字段

class bookinfoserializer(serializers.modelserializer):

「」「圖書資料序列化器」""

class meta:

model = bookinfo

exclude = (『image』,)

3)預設modelserializer使用主鍵作為關聯字段,但是我們可以使用depth來簡單的生成巢狀表示,depth應該是整數,表明巢狀的層級數量。

class heroinfoserializer2(serializers.modelserializer):

class meta:

model = heroinfo

fields = 『all

depth = 1

形成的序列化器如下:

4)顯示指明字段,如:

class heroinfoserializer(serializers.modelserializer):

hbook = bookinfoserializer()

class meta:

model = heroinfo

fields = ('id', 'hname', 'hgender', 'hcomment', 'hbook')

5)指明唯讀字段

可以通過read_only_fields指明唯讀字段,即僅用於序列化輸出的字段

class bookinfoserializer(serializers.modelserializer):

「」「圖書資料序列化器」""

class meta:

model = bookinfo

fields = (『id』, 『btitle』, 『bpub_date』, 『bread』, 『bcomment』)

read_only_fields = (『id』, 『bread』, 『bcomment』)

3.新增額外引數

我們可以使用extra_kwargs引數為modelserializer新增或修改原有的選項引數

class bookinfoserializer(serializers.modelserializer):

「」「圖書資料序列化器」""

class meta:

model = bookinfo

fields = (『id』, 『btitle』, 『bpub_date』, 『bread』, 『bcomment』)

extra_kwargs = ,

『bcomment』: ,

}原文:

序列化(模型序列化 序列化巢狀)

from rest framework import serializers from meituan.models import merchant,class merchantserializer serializers.modelserializer class meta model merch...

序列化(序列化)

原書上翻譯為序列化,msdn翻譯為序列化 作用 當需要儲存,或者網路傳輸 remoting時,資料 物件或值 需要序列化 類似於打包傳輸檔案。system.serializableattribute 序列化是指儲存和獲取磁碟檔案 記憶體或其他地方中的物件。在序列化時,所有的例項資料都儲存到儲存介質上...

C 類的序列化和反序列化

在很多通訊或者資料儲存的過程中,都需要序列化和反序列化的過程。在c 中,如果想要進行自定義類的序列化,只需要簡單地在定義類的時候新增serializable標籤即可。如 serializable publicclassperson 經常用到的序列化方式有兩種 二進位制和xml,分為由system.r...