json Django REST框架:对对象列表进行格式化

v7pvogib  于 2023-10-21  发布在  Go
关注(0)|答案(1)|浏览(93)

我想接受一个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()

我只想给ThingsSerializer传递一个传入的id,让它处理自己的东西。当我通过一个带有关键“东西”的法令时,一切都很好。
然而,我希望能够有一个这些的列表,我有一个序列化器,这个中间序列化器嵌套在里面。它看起来像下面:

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。但是我发现文档中关于如何从非模型序列化器使用它有点不清楚,我不确定它是否能达到目的。可能是吧

j13ufse2

j13ufse21#

事实证明,这更像是我思维过程中的一个错误。像下面这样使用JSON就可以了。

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

相关问题