Как определить 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},
    }
Вернуться на верх