模型類序列化器ModelSerializer
阿新 • • 發佈:2018-12-19
如果我們想要使用序列化器對應的是Django的模型類,DRF為我們提供了ModelSerializer模型類序列化器來幫助我們快速建立一個Serializer類。
ModelSerializer與常規的Serializer相同, 但提供了:
-
基於模型類自動生成一系列欄位, 基於模型類自動為Serializer生成validators,比如unique_together,
-
包含預設的create和update的實現.
-
定義
class Meta: model指明參照哪個模型類, fields指明為模型類的哪些欄位生成
-
指定欄位:
-
fields 用來明確欄位, __all__表名包含所有欄位, 也可以寫明具體哪些欄位.
-
使用exclude可以明確排除掉哪些欄位
-
預設ModelSerializer使用主鍵作為關聯欄位,但是我們可以使用depth來簡單的生成巢狀表示,depth應該是整數,表明巢狀的層級數量
-
可以通過read_only_fields指明只讀欄位, 僅用於序列化輸出的欄位.
-
-
新增額外引數
可以使用extra_kwargs引數為ModelSerializer新增或修改原有的選項引數
class BookInfoSerializer(serializers.ModelSerializer): class Meta: model = BookInfo fields = ('id','name', 'readcount', 'commentcount') read_only_fields = ('id', 'readcount', 'commentcount') extra_kwargs = { 'readcount': {'min_value': 0, 'required': True}, 'commentcount': {'max_value': 0, 'required': True}, }