Я хочу узнать об использовании 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]