如何使用Djangomshmallow序列化一个简单的Dict?

2024-10-01 09:24:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试了所有的方法,当我通过调用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()

最后一行总是返回'False',我试图引发一个异常,这就是我得到的结果

{'trial': [ErrorDetail(string='Unknown field.', code='invalid')], 'trial_1': [ErrorDetail(string='Unknown field.', code='invalid')]}

这是我使用的包-django-marshmallow


Tags: 方法fieldstring序列化iscoderesultunknown
1条回答
网友
1楼 · 发布于 2024-10-01 09:24:19

使用某些字段定义序列化程序时,需要将同一字段传递给序列化程序,以便序列化程序序列化数据

kvs_result = {
    "trial": "Config",
    "trial_1": "Congig",
}

此数据不包含序列化程序字段键,即kv_map,因此kvs_serializer.is_valid()将始终返回False

正确的数据:

data = {"kv_map": {"trial": "Config", "trial_1": "Congig",}}

由于您已将kv_映射字段定义为kv_map = fields.Dict(),因此需要传递一个字典,其键为kv_map,其值为字典

相关问题 更多 >