序列化器 和 django中 的 form 和 modelform 有類似的地方 ,
因為 在 drf 中,沒有模板的概念,所以 序列化的主要作用
是對響應的資料做序列化的, 還可以對 接收到的資料做序列化
serializer 序列化 查詢的結果
queryset = user.objects.
all(
)serializer = userserializer(queryset, many=
true
)serializer.data
ps : 序列化類中,定義的屬性,只能比要序列化的模型 屬性 只能少, 不能多
serializer 接收引數
serializer = userserializer(data=request.data)
if serializer.is_valid():
...return response(..
.)return response(serializer.errors, status=status.http_400_bad_request)
serializer create 功能class
userserializer
(serializers.serializer):.
..defcreate
(self, validation_data)
:return user.objects.create(
**validation_data)
serialzie update 功能class
userserializer
(serializers.serializer):.
..defupdate
(self, instance, validation_data)
: queryset = user.objects.
filter
(pk=instance.pk)
queryset.update(
**validation_data)
return queryset[
0]
更新**或者參考官方示例
class
userserializer
(serializrs.modelserializer)
:class
meta
: model = user
fields =
['username'
,'password'
,'***'
]
或者
class
userserializer
(serializrs.modelserializer)
:class
meta
: model = user
fields =
"__all__"
ps: 該類在使用的時候,會產生乙個錯誤
hyperlinkedidentityfield
requires the request in the serializer context.
addcontext=
when instantiating the serializer.
hyperlinkedmodelserializer
缺省會 將 主鍵 轉為 url
預設的轉換規則是 根據 pk 去查詢 view_name = 「模型名小寫-detail」 的檢視
要想覆蓋他的 預設行為 ,則可以 在 class meta 中,新增乙個 extra_kwargs
具體**如下:
class
userserializer
(hyperlinkedmodelserializer)
:class
meta
: model = user
fields =
"__all__"
extra_kwargs =
}
ps : 在 多的一方、序列化資料的時候,預設顯示一方的pk值
顯示關係屬性的指定的某個屬性
在 序列化器 中 ,覆蓋 關係屬性,使用 readonlyfield(source=「模型小寫.模型屬性」)
class
addressserializer
(serializers.modelserializer)
: user = serializers.readonlyfield(source=
"user.pk"
)class
meta:.
..
顯示關係屬性的指定的所有屬性class
addressserializer
(serializers.modelserializer)
: user = userserializer(
)class
meta:.
..
顯示關係屬性的 用 位址來顯示class
addressserializer
(serializers.modelserializer)
: user = hyperlinkedrelatedfield(view_name=
"user-detail"
, lookup_field=
"pk"
, read_only=
true
)class
meta:.
..
hyperlinkedrelatedfield
: 根據關係屬性對應的id進行資料的查詢
hyperlinkedidentityfield
: 根據序列化類對應的模型的主鍵進行查詢
hyperlinkedrelatedfield/hyperlinkedidentityfield常見的屬性有:
drf 序列化器
models.pyclass chargepolicydetail models.model purpose c models.apartment.purpose category c models.apartment.category name models.charfield max lengt...
drf之序列化器
1.drf框架定義的序列化流程 1.狹義上的序列化定義 資料流向 後端到前段 後端負責處理資料處理流程 模型類物件 字典 json字串 drf約定的序列化流程 1.通過django模型類獲取資料庫資料構建模型類物件 2.把模型類物件轉化為字典 3.把字典轉化為json格式的字串 2.drf框架的反序...
drf 中的序列化器
序列化器 和 django中 的 form 和 modelform 有類似的地方 因為 在 drf 中,沒有模板的概念,所以 序列化的主要作用 是對響應的資料做序列化的,還可以對 接收到的資料做序列化 serializer 序列化 查詢的結果queryset user.objects.all ser...