Django Rest Framework ListField и DictField
у меня борьба с пониманием 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__ () получил неожиданное аргумент ключевого слова 'stops_left'
Нужный Выход
{
"idn": 1,
"buses": [
{"idn": 11, "stops_left": 4},
{"idn": 12, "stops_left": 15}
]
}
как этого добиться? buses
список и может содержать столько элементов, сколько я хочу.
окружающая среда
- python 3.5.1
- 1.9.6 Джанго
- django-rest-framework 3.3.3
1 ответов
Я думаю, вместо того, чтобы делать это, вы должны использовать вложенные сериализаторы.
создать BusSerializer
с полями idn
и stops_left
. Затем включите этот сериализатор в свой StopOncomingSerializer
as