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