没有项目描述
drf-keyed-list的Python项目详细描述
django rest框架的键列表
此包支持存储在dict
中的对象列表的序列化和反序列化,其中
对象的值(通常是pk
)用作dict中的键。例如,
{
"1": {<other fields for object with id 1>},
"2": {<other fields for object with id 2>},
...
}
安装
pip install drf-keyed-list
用法
下面是一个用法示例:
class MySerializer(ModelSerializer):
class Meta:
list_serializer_class = KeyedListSerializer
keyed_list_serializer_field = 'id'
通过替换list_serializer_class
,仅当使用many=True
标志时才会启用此行为:
instance = {
"id": "pk_val",
"field1": "val1",
"field2": "val2",
...
}
serializer = MySerializer(data=instance)
# this should work
serializer.is_valid()
serializer.save()
keyed_list = {
"pk_val": {
"field1": "val1",
"field2": "val2",
...
}
}
# many=True will trigger the keyed-list behavior
serializer = MySerializer(data=keyed_list, many=True)
# this should also work
serializer.is_valid()
serializer.save()
注意:keyed_list_serializer_field
必须引用唯一字段,否则在序列化过程中可能发生密钥冲突,
加上未定义的反序列化行为(如果与嵌套的可写序列化程序结合使用)(例如
drf-writable-nested)。此时,包没有
尽一切努力验证是否已选择唯一字段。
作者
2018年,克莱顿戴利三世