序列化器.py
class BusOncomingSerializer(serializers.Serializer):
idn = serializers.IntegerField(read_only=True)
stops_left = serializers.IntegerField(read_only=True)
class StopOncomingSerialier(serializers.Serializer):
idn = serializers.IntegerField(read_only=True)
buses = BusOncomingSerializer(many=True)
我的序列化器实例在以下列表中有效:
buses_serializers = [bus1, bus2, bus3]
# busX means instance of BusOncomingSerializer and they are valid.
我正在尝试添加这些BusOncomingSerializer
实例到单个StopOncomingSerializer
实例通过:
serializer = serializers.StopOncomingSerializers(data={"idn": 1, "buses": buses_serializers})
我跑is_valid()
。然而,它提出:
类型错误:BusOncomingSerializer(data={'idn': 285, 'stops_left': 7}): idn = IntegerField(read_only=True)stops_left = IntegerField(read_only=True) 不可 JSON 序列化
我不应该将序列化器实例添加到列表中吗?还有其他方法吗?
环境
- 蟒蛇3.5.1
- Django 1.9.5
- django-rest-framework 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)