Подтвердить что ты не робот

Django Rest Framework Вложенный Serializer required = False error

В DRF v3.1 у меня есть вложенный сериализатор, подобный тому, который подробно описан в документах - http://www.django-rest-framework.org/api-guide/serializers/#dealing-with-nested-objects

class SerializerA(serializers.Serializer):
    details = DetailsSerializer(required=False)

Однако, пытаясь использовать этот сериализатор и не поставляя детали, я получаю следующее:

{u'details': [u'This field may not be null.']}

Это кажется неправильным с учетом документов?

Кто-нибудь еще сталкивается с этим или может проверить это как ошибку?

4b9b3361

Ответ 1

Хорошо, поэтому комментарий Кевина Браунса верен. Мне нужно было добавить allow_null = True.

class SerializerA(serializers.Serializer):
    details = DetailsSerializer(required=False, allow_null=True)

Причиной этого является то, что с обязательным = False позволяет детали поля отсутствовать в данных при построении сериализатора.

например. s = SerializerA(data={})

тогда как allow_null разрешает указать параметр, но должен быть нулевым.

например. s = SerializerA(data={'details': None})

Это открывает еще одну проблему с API-интерфейсом, поддерживающим DRF, но я спрошу об этом в другом вопросе.