如何使用 django-marshmallow 序列化一个简单的字典?
How to serialize a simple Dict using django-marshmallow?
我尝试了所有方法,当我通过调用 is_valid() 验证序列化程序时,我总是收到错误。
class KVSFileMapSerializer(Schema):
kv_map = fields.Dict()
kvs_result = {
'trial': 'Config',
'trial_1': 'Congig',
}
kvs_serializer = KVSFileMapSerializer(data=kvs_result)
kvs_serializer.is_valid()
最后一行总是 returns 'False',我尝试引发异常,结果是这样,
{'trial': [ErrorDetail(string='Unknown field.', code='invalid')],
'trial_1': [ErrorDetail(string='Unknown field.', code='invalid')]}
这是我使用的包 - django-marshmallow
当您使用某些字段定义序列化程序时,您需要将相同的字段传递给序列化程序,以便序列化程序序列化数据。
kvs_result = {
"trial": "Config",
"trial_1": "Congig",
}
此数据不包含序列化程序字段键,即 kv_map
,因此 kvs_serializer.is_valid()
将始终 return False
.
正确数据:
data = {"kv_map": {"trial": "Config", "trial_1": "Congig",}}
因为您已将 kv_map 字段定义为 kv_map = fields.Dict()
,您需要传递一个字典,其键为 kv_map
,其值为字典。
我尝试了所有方法,当我通过调用 is_valid() 验证序列化程序时,我总是收到错误。
class KVSFileMapSerializer(Schema):
kv_map = fields.Dict()
kvs_result = {
'trial': 'Config',
'trial_1': 'Congig',
}
kvs_serializer = KVSFileMapSerializer(data=kvs_result)
kvs_serializer.is_valid()
最后一行总是 returns 'False',我尝试引发异常,结果是这样,
{'trial': [ErrorDetail(string='Unknown field.', code='invalid')], 'trial_1': [ErrorDetail(string='Unknown field.', code='invalid')]}
这是我使用的包 - django-marshmallow
当您使用某些字段定义序列化程序时,您需要将相同的字段传递给序列化程序,以便序列化程序序列化数据。
kvs_result = {
"trial": "Config",
"trial_1": "Congig",
}
此数据不包含序列化程序字段键,即 kv_map
,因此 kvs_serializer.is_valid()
将始终 return False
.
正确数据:
data = {"kv_map": {"trial": "Config", "trial_1": "Congig",}}
因为您已将 kv_map 字段定义为 kv_map = fields.Dict()
,您需要传递一个字典,其键为 kv_map
,其值为字典。