DRF-模型類序列化器
定義和使用
模型類序列化器功能:
- 1)根據指定的規則,自動對映欄位參與序列化/反序列化
- 2)重寫了 create 和 update 方法實現模型類物件的新建和更新邏輯
"""
使用模型類序列化器來操作模型類增刪改查
"""
from rest_framework import serializers
# serializers.ModelSerializer: 模型類序列化器基類
from .models import *
def check_btitle(value):
if "django" not in value:
raise serializers.ValidationError("這不是一本關於django的書")
class BookInfoModelSerializer(serializers.ModelSerializer):
class Meta:
# 1、宣告當前序列化器針對的模型類
model = BookInfo # 潛臺詞,將來新建/更新的是BookInfo
# 2、宣告參與序列化/反序列化的模型類欄位
# 3、自動對映欄位(主鍵隱藏欄位自動對映,非主鍵隱藏欄位不會)
fields = "__all__"
# 4、顯示宣告參與序列化/反序列化的欄位
# fields = ['btitle', 'bpub_date', 'id', 'heros']
# 5、排除指定欄位,把其他欄位對映過來參與序列化/反序列化
# exclude = ['btitle', 'bpub_date']
# 6、調整欄位的約束條件
extra_kwargs = {
'bread': {'min_value': 0},
'bcomment': {'min_value': 0},
# btitle = serializers.CharField(validator=[check_btitle])
# 'btitle': {'validators': [check_btitle]}
}
# 7、設定read_only=True的欄位
# read_only_fields = ['id', 'btitle']
# def validate_btitle(self, value):
# if "django" not in value:
# raise serializers.ValidationError("這不是一本關於django的書")
# return value
def validate(self, attrs):
# 自定義校驗
return attrs
流程:
- 定義模型類序列化器
- 宣告當前序列化器針對的模型類
- 宣告參與序列化/反序列化的模型類欄位
- 自動對映欄位(主鍵隱藏欄位自動對映,非主鍵隱藏欄位不會)
- 顯示宣告參與序列化/反序列化的欄位
- 排除指定欄位,把其他欄位對映過來參與序列化/反序列化
- 調整欄位的約束條件
- 設定read_only=True的欄位
- 自定義校驗
相關文章
- ApiView/Request類原始碼分析/序列化器APIView原始碼
- 泛型類序列化泛型
- gym序列化、EzPickle類
- APIView和序列化類 serializersAPIView
- 實體類與XML序列化與反序列化XML
- day100:MoFang:使用者模型類的建立&Marshmallow模組&使用基本構造器Schema完成資料的序列化轉換和反序列化轉換模型
- 序列化涉及的類和介面
- 10django模型[模型類]Django模型
- C# 實體類序列化與反序列化一 (XmlSerializer)C#XML
- 序列化器-Serializer LL
- Sqlalchemy 資料模型序列化(轉JSON)SQL模型JSON
- drf——Request原始碼分析、序列化元件、序列化類的使用(欄位類和引數)、反序列化校驗和儲存原始碼元件
- 實體類為啥要序列化
- 文字分類模型文字分類模型
- 命令建立模型類模型
- C# 實體類序列化與反序列化二 (DataContractSerializer)C#
- c#.net實體類序列化方法 為什麼要序列化C#
- 模型欄位與序列化正反向查詢模型
- Python序列化模型資料為JSONPython模型JSON
- C++ XML 序列化器C++XML
- 資料解析器以及序列化和反序列化
- Django(45)drf序列化類的使用(Serializer)Django
- Python中類的JSON序列化PythonJSON
- 使用 TensorFlow Hub 和估算器構建文字分類模型文字分類模型
- 應用聚類模型獲得聊天機器人語料聚類模型機器人
- 深入理解JVM(③)虛擬機器的類載入器(雙親委派模型)JVM虛擬機模型
- 虛擬機器執行子系統_類載入器、雙親委派模型虛擬機模型
- IO模型學習(一)IO模型分類模型
- ModelSerializer序列化器實戰
- 基於protostuff的序列化工具類開發
- Django(46)drf序列化類的使用(ModelSerializer)Django
- Json反序列化物件通用工具類JSON物件
- gin + gorm 實現單模型的curd的父類控制器GoORM模型
- 類檔案的結構、JVM 的類載入過程、類載入機制、類載入器、雙親委派模型JVM模型
- 【Django drf】 序列化類常用欄位類和欄位引數 定製序列化欄位的兩種方式 關係表外來鍵欄位的反序列化儲存 序列化類繼承ModelSerializer 反序列化資料校驗原始碼分析Django繼承原始碼
- JSON繼承JsonConverter序列化與反序列化重寫類屬性JSON繼承
- django不使用序列化器來進行查詢結果序列化Django
- 獨立模型 和分類模型