Как определить init в сериализаторе, чтобы установить все поля required=False в Django rest?
У меня есть модель, в которой данные заполняются через форму во фронтенде посредством вызова API. У меня есть update api, в котором все поля установлены в required=False.
Я сделал это следующим образом:
class LeadSerializer(serializers.ModelSerializer):
email= serializers.EmailField(required=False)
phone = serializers.CharField(required=False)
first_name = serializers.CharField(required=False)
last_name = serializers.CharField(required=False)
class Meta:
model = Lead
# fields = '__all__'
# depth = 1
fields = ['id','title','first_name','last_name','address','company_name',
'city','state','country','phone','source','mobile',
'email','gender','date_created','lead_status']
Здесь я показал только четыре поля как required=False Но мне нужно это для всех полей. Как установить все поля в false, написав функцию init здесь, внутри сериализатора, вместо того, чтобы писать каждое поле вручную?
PS Я использую один и тот же сериализатор (вышеупомянутый) для создания, листинга и обновления.
Чтобы добиться этого в сериализаторе, необходимо использовать опцию extra_kwargs Meta. Ниже приведен пример использования:
class Meta:
model = Lead
# fields = '__all__'
# depth = 1
fields = ['id','title','first_name','last_name','address','company_name',
'city','state','country','phone','source','mobile',
'email','gender','date_created','lead_status']
extra_kwargs = {
'company_name': {'required': False},
'city': {'required': False},
}