Сериализатор Django Rest Framework потерял данные ListField во время проверки - PullRequest
0 голосов
/ 30 января 2019

Я хочу сериализовать список строк, а также некоторые другие поля.Почему-то это не подтверждается данными.

class OptionsSerializer(serializers.Serializer):
    lst = serializers.ListField(
        serializers.CharField(),
    )
    field_a = serializers.CharField()
    field_b = serializers.IntegerField()

Полезная нагрузка запроса:

{"lst":["abc"],"field_a":"some text","field_b":1}

Вывод отладчика:

ipdb> serializer.is_valid()
True
ipdb> serializer.validated_data
OrderedDict([('field_a', 'some text'), ('field_b', 1)])

Есть идеи, почему это так?

Ответы [ 2 ]

0 голосов
/ 30 января 2019

child является аргументом ключевого слова, поэтому вам нужно инициализировать ListField следующим образом:

 lst = serializers.ListField(
        child=serializers.CharField(),
 )
0 голосов
/ 30 января 2019

Документация говорит, что вам нужно установить child аргумент ключевого слова ListField.

child - Экземпляр поля, который должен использоваться для проверки объектов в списке.Если этот аргумент не указан, объекты в списке не будут проверены.

Попробуйте:

lst = serializers.ListField(
    child=serializers.CharField()
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...