我想接受如下的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并让它处理它自己的东西。当我通过一个带有关键“东西”的字典时,这一切都很好用,花花公子。
但是,我希望能够得到这些列表并且我有一个序列化器,这个MiddleSerializer嵌套在里面。它看起来如下:
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。但是我发现文档有点不清楚如何从非模型序列化器中使用它,我不确定它是否能达到目的。可能是这样。
答案 0 :(得分:0)
在我的思考过程中,这更像是一个错误。像下面那样格式化JSON就可以了。
{
'thing': {
'name': 'string',
'id': '18',
},
quantity': '3'
}