我正在努力理解ListField
和DictField
。我想将它用作序列化程序上的字段。我有一个ListField
可能包含许多DictField
。我试图编写一个序列化程序,如下所示:
class StopOncomingSerialier(serializers.Serializer):
idn = serializers.IntegerField(read_only=True)
buses = serializers.ListField(
child=serializers.DictField(
idn=serializers.IntegerField(read_only=True),
stops_left=serializers.IntegerField(read_only=True)
),
read_only=True
)
我知道,这没有意义,因为文档中说DictField
和ListField
以child
作为参数。因此,上面的代码自然会引发错误:
TypeError: __init__() got an unexpected keyword argument 'stops_left'
{
"idn": 1,
"buses": [
{"idn": 11, "stops_left": 4},
{"idn": 12, "stops_left": 15}
]
}
如何做到这一点?buses
是一个列表,可以包含任意多的元素。
我认为应该使用嵌套的序列化器,而不是这样做。
创建具有字段
idn
和stops_left
的BusSerializer
。然后将这个序列化程序作为buses
字段包含在many=True
参数中,以处理多个buses
数据。相关问题 更多 >
编程相关推荐