項目名稱
- drf-dynamic-fields
項目描述
- 提供了一個mixin,用于serializer,實作動态配置傳回字段的效果。在擷取資料的API的時候,在URL中加入一個查詢字段fields,用來過濾傳回資料的字段,減少網絡傳輸的資料。
- github位址: https://github.com/dbrgn/drf-dynamic-fields
安裝
pip install drf-dynamic-fields
- 如果不想在項目中多加一個庫,也可以直接将項目中drf_dynamic_fields目錄下的init.py檔案中的類直接複制出來到自己的項目中。 直接下載下傳init檔案 --> 點這裡 。
配置
- 在建立serializer的時候,把DynamicFieldsMixin這個mixin加上即可。
- 下面的代碼是一個示例,我們建立了一個BookSerializer,加入了DynamicFieldsMixin。
from rest_framework import serializers from drf_dynamic_fields import DynamicFieldsMixin from .models import Book class BookSerializer(DynamicFieldsMixin, serializers.ModelSerializer): class Meta: model = Book fields = '__all__'
然後,就可以直接用了~
使用
- 我們可以在url中使用fields來指定要傳回的字段,例如我們在查詢中僅需要擷取圖書的書名(name)和作者(author),那麼URL可以寫成這個樣子,多個字段間使用逗号分隔即可:
GET https://wxy.email/book/?fields=name,author
- 對于擷取單條資訊的查詢也同樣好使:
GET https://wxy.email/book/666/?fields=name,author
- 如果我們僅僅需要某些字段不顯示,則可以使用omit參數省略一些字段,例如我們在查詢中其他的資訊都要,但是圖書描述資訊字段(description)不要,那麼我們可以把URL寫成這個樣子:
GET https://wxy.email/book/?omit=description
- 參考資訊: 作者在github項目中實際上說到為了保持項目的簡單,實際上已經不再接受新需求的添加了。
- 如果需要更強大的字段動态擷取功能,則可以參考這個項目 https://github.com/rsinger86/drf-flex-fields
- 參考連結: 時光不寫部落格-Django Rest Framework 動态擷取字段
- 本文轉載自: knktc