Добавление много сериализатора в поле вложенного сериализатора

serializers.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) 

У меня есть экземпляры serializer, которые действительны в списке, как показано ниже:

 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() . Однако он поднимает:

TypeError : BusOncomingSerializer (data = {'idn': 285, 'stops_left': 7}): idn = IntegerField (read_only = True) stops_left = IntegerField (read_only = True) не является сериализуемым JSON

Должен ли я не добавлять экземпляры сериализатора со списком, есть ли другой способ?


Окружающая среда

One Solution collect form web for “Добавление много сериализатора в поле вложенного сериализатора”

Вы неправильно StopOncomingSerializer данные в 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 
  • Конструкция объекта Python 3: что является наиболее Pythonic / принято?
  • Как указать тип возвращаемого типа с нулевым типом с подсказками типа
  • Невозможно интерпретировать MATLAB interp2d в Python scipy.interp
  • Может ли кто-нибудь дать мне быстрый учебник по stdin и stdout в Python 3?
  • Все ли больше, чем Нет?
  • Как использовать string.replace () в python 3.x
  • Объект Map не имеет len () в Python 3.3
  • Плавающая точка до 16 бит Twos Complement Binary, Python
  • Python горит звездочкой в ​​аргументе функции
  • Могу ли я использовать Python 3 super () в Python 2.5.6?
  • Импорт класса из другого файла
  • Python - лучший язык программирования в мире.