【问题标题】:How to serialize a simple Dict using django-marshmallow?如何使用 django-marshmallow 序列化一个简单的字典?
【发布时间】:2020-06-26 21:18:16
【问题描述】:

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

【问题讨论】:

    标签: python python-3.x django django-rest-framework marshmallow


    【解决方案1】:

    当您定义带有某些字段的序列化器时,您需要将相同的字段传递给序列化器,以便序列化器序列化数据。

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

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

    正确数据:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-12
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 2018-12-04
      • 1970-01-01
      相关资源
      最近更新 更多