DRF-сериализатор возвращает пустые поля - PullRequest
0 голосов
/ 08 октября 2018

В сериализаторе drf, если значение отсутствует в данных публикации, как мне сохранить имя поля с нулевым значением?

Я использую версию 3.3.3

TYPES = [
    ("abc", "abc"),
    ("def", "def"),
]

class MySerializer(serializers.Serializer):
    choice = serializers.ChoiceField(choices=TYPES, required=False, initial=None)

serializer = MySerializer(data={})
serializer.is_valid()
print serializer.data

Токовый выход {}

Требуемый выход {'choice': None}

1 Ответ

0 голосов
/ 08 октября 2018

Отметьте это, это должно вернуть то, что вы ожидаете

class MySerializer(serializers.Serializer):
    choice = serializers.ChoiceField(choices=TYPES, required=False, allow_blank=True)
    def to_representation(self, instance):
        ret = super().to_representation(instance)
        if 'choice' in ret:
           return ret
        else:
            ret.update({'choice':''})
            return ret

проверьте документацию, чтобы узнать, что делает to_representation https://www.django -rest-framework.org / api-guide / serializers / # to_representationself-OBJ

...