如何使用 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,其值为字典。