Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django REST框架:反序列化对象列表_Python_Json_Django_Serialization - Fatal编程技术网

Python Django REST框架:反序列化对象列表

Python Django REST框架:反序列化对象列表,python,json,django,serialization,Python,Json,Django,Serialization,我想接受JSON数据,如下所示: { 'id': 166, 'data_lines': [ { 'name': 'string', 'quantity': '1', 'id': '1' }, { 'name': 'string', 'quantity': '2', 'id': '12'

我想接受JSON数据,如下所示:

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

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

        {
            'name': 'string',
            'quantity': '3',
            'id': '18'
        }
    ],
}
class TopSerializer(serializers.Serializer):
    some_other_id = serializers.IntegerField()
    things = serializers.ListField(child=MiddleSerializer())
    # I also tried the above with (many=True)
我希望能够通过反序列化数据,从中构建一个简单的购物篮

问题是,我现在有三个序列化程序

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

class MiddleSerializer(serializers.Serializer):
    thing = ThingSerializer()
我只想把传入的id传递给ThingsSerializer,让它处理自己的东西。当我通过一个有关键“东西”的口述时,一切都很顺利

然而,我希望能够有一个这些的列表,我有一个序列化程序,这个中间序列化程序嵌套在其中。如下所示:

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

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

        {
            'name': 'string',
            'quantity': '3',
            'id': '18'
        }
    ],
}
class TopSerializer(serializers.Serializer):
    some_other_id = serializers.IntegerField()
    things = serializers.ListField(child=MiddleSerializer())
    # I also tried the above with (many=True)
但当我将数据传递给这个TopSerializer时,它会给我一个关于缺少所需关键字“thing”的错误


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

这在我的思考过程中更像是一个错误。按照下面的格式格式化JSON成功了

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