Python 向嵌套序列化程序字段添加多个序列化程序 序列化程序.py

Python 向嵌套序列化程序字段添加多个序列化程序 序列化程序.py,python,django,python-3.x,django-rest-framework,Python,Django,Python 3.x,Django Rest Framework,我的序列化程序实例在以下列表中有效: buses_serializers = [bus1, bus2, bus3] # busX means instance of BusOncomingSerializer and they are valid. 我正试图通过以下方式将这些busonomingserializer实例添加到单个stoponomingserializer实例: serializer = serializers.StopOncomingSerializers(data={"idn

我的序列化程序实例在以下列表中有效:

buses_serializers = [bus1, bus2, bus3]
# busX means instance of BusOncomingSerializer and they are valid.
我正试图通过以下方式将这些
busonomingserializer
实例添加到单个
stoponomingserializer
实例:

serializer = serializers.StopOncomingSerializers(data={"idn": 1, "buses": buses_serializers})
我运行
是否有效()
。然而,它提出:

TypeError:BusonCommingSerializer(数据={'idn':285,'stops_left':7}):idn=IntegerField(read_only=True)stops_left=IntegerField(read_only=True)不可JSON序列化

我不应该添加带有列表的序列化程序实例,还有其他方法吗


环境
  • python 3.5.1
  • django 1.9.5
  • django rest框架3.3.3

您将数据错误地传递到
StopOncomingSerializer
。您不应该传递
bus
实例,而应该将值作为字典列表传递

样本数据格式:

{
    'idn': 7, 
    'buses': [
        {'idn':3, 'stops_left': 3}, 
        {'idn': 4, 'stops_left':6}
    ]
}
Python外壳上的

In [5]: data = {'idn': 7, 'buses': [{'idn':3, 'stops_left': 3}, {'idn': 4, 'stops_left':6}]}

In [6]: s1 = StopOncomingSerialier(data=data)

In [7]: s1.is_valid()
Out[7]: True

我将一个
stoponcingserializer
实例初始化为
serializer=serializers.stoponcingserialier(data={“idn”:stop_idn,“bus”:bus})
。你能举个例子吗注意:
bus
是一个包含许多
busoncommingserializer
实例的列表。我添加了一个在shell上完成的示例。也许这会有所帮助。@ErdinEray传递整个结构,之前不要尝试解析总线,让序列化程序完成它的工作并解析所有深层结构
In [5]: data = {'idn': 7, 'buses': [{'idn':3, 'stops_left': 3}, {'idn': 4, 'stops_left':6}]}

In [6]: s1 = StopOncomingSerialier(data=data)

In [7]: s1.is_valid()
Out[7]: True