【问题标题】:Django REST Framework: deserializing a list of objectsDjango REST Framework:反序列化对象列表
【发布时间】:2017-03-19 14:07:55
【问题描述】:

我想接受如下 JSON 数据:

{
    'id': 166,
    'data_lines': [
        {
            'name': 'string',
            'quantity': '1',
            'id': '1'
        },

        {
            'name': 'string',
            'quantity': '2',
            'id': '12'
        },

        {
            'name': 'string',
            'quantity': '3',
            'id': '18'
        }
    ],
}

我希望能够通过反序列化数据来构建一个简单的购物篮

问题是,我目前涉及三个序列化程序。

其中一个,我们称之为 MiddleSerializer,我有:

class MiddleSerializer(serializers.Serializer):
    thing = ThingSerializer()

我只想将传入的 id 传递给 ThingsSerializer 并让它处理自己的东西。当我传递一个带有关键“东西”的字典时,一切都很好。

但是,我希望能够拥有这些列表,并且我有一个序列化程序,这个 MiddleSerializer 嵌套在其中。如下所示:

class TopSerializer(serializers.Serializer):
    some_other_id = serializers.IntegerField()
    things = serializers.ListField(child=MiddleSerializer())
    # I also tried the above with (many=True)

但是当我通过这个 TopSerializer 我的数据时,它给了我一个关于缺少关键字“东西”的错误,这是必需的。

我应该如何设置序列化程序以便我可以传递数据列表?我觉得我可以以某种方式使用 PrimaryKeyRelatedField(),因为 ThingSerializer() 是 ModelSerializer。但我发现文档有点不清楚如何从非模型序列化程序中使用它,我不确定它是否能达到目的。可能是这样。

【问题讨论】:

    标签: python json django serialization


    【解决方案1】:

    事实证明,这在我的思考过程中更像是一个错误。像下面这样格式化 JSON 就可以了。

    {
        'thing': {
            'name': 'string',
            'id': '18',
        },
        quantity': '3'
    }
    

    【讨论】:

      猜你喜欢
      • 2017-07-12
      • 2014-02-09
      • 2021-11-30
      • 2015-03-15
      • 2014-08-08
      • 1970-01-01
      • 2015-08-26
      • 2016-10-22
      • 2017-07-28
      相关资源
      最近更新 更多