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

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 
  • in и index в списке
  • Python3: В чем разница между ключевыми словами и встроенными?
  • Разница между sys.stdout.write и печать при печати переменных
  • xlwt book.save ТипError: должен быть str, а не байтами
  • Эффективно проверьте, если элемент встречается не менее n раз в списке
  • Почему string.maketrans не работает в Python 3.1?
  • TypeError: элемент последовательности 1: ожидается байтоподобный объект, str найден
  • Имя не определено в аннотации типа
  • Python - лучший язык программирования в мире.