1. 程式人生 > >模型類序列化器ModelSerializer

模型類序列化器ModelSerializer

如果我們想要使用序列化器對應的是Django的模型類,DRF為我們提供了ModelSerializer模型類序列化器來幫助我們快速建立一個Serializer類。

ModelSerializer與常規的Serializer相同, 但提供了:

  • 基於模型類自動生成一系列欄位, 基於模型類自動為Serializer生成validators,比如unique_together,

  • 包含預設的create和update的實現.

  1. 定義

     class Meta:
    
     	model指明參照哪個模型類,
     
     	fields指明為模型類的哪些欄位生成
    
  2. 指定欄位:

    • fields 用來明確欄位, __all__表名包含所有欄位, 也可以寫明具體哪些欄位.

    • 使用exclude可以明確排除掉哪些欄位

    • 預設ModelSerializer使用主鍵作為關聯欄位,但是我們可以使用depth來簡單的生成巢狀表示,depth應該是整數,表明巢狀的層級數量

    • 可以通過read_only_fields指明只讀欄位, 僅用於序列化輸出的欄位.

  3. 新增額外引數

    可以使用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},
             }