Я хочу узнать об использовании required=False в DRF Serializer

У меня есть сериализатор (не модель сериализатора)

class DummySerializer(serializers.Serializer):
    clas = serializers.CharField()
    section = serializers.CharField(required=False)

Теперь, когда я даю пустой ввод ("") в "section" во время PUT, то получаю ошибку (хотя я задал required=False) как

{
  "section": [
    "This field may not be blank."
  ]
}

Я хочу что-то вроде этого, Если я дам и "clas" и "section" в качестве входных данных, то мой request.data должен дать

{"clas": "my_input", "section": "my_input"}

и когда я даю только "clas", то request.data должен дать

{"clas": "my_input" }

НЕ

{"clas": "my_input", "section": ""}

Тогда, с моей точки зрения, я хочу дать значение по умолчанию переменной на основе поля "section" есть или нет, как

var = request.data.get("section", "default_val")

Может кто-нибудь помочь, как добиться такого поведения.

Я не могу вспомнить точно, но вы должны сначала убедиться, что ваша модель является nullable.Is is marked as "blank=True" or "Null=True"?

В дополнение к добавлению required=False, вы также должны добавить allow_blank=True и allow_null=True к этому полю, тогда оно принимает пустой ввод для этого поля или значение None.

Добавив их, ваше представление будет выглядеть следующим образом:

class DummySerializer(serializers.Serializer):
    clas = serializers.CharField()
    section = serializers.CharField(required=False, allow_blank=True, allow_null=True)

Reference: CharField [drf-docs]

Вернуться на верх