              return self.field_mapping[model_field.__class__](**kwargs)
          except KeyError:
              return ModelField(model_field=model_field, **kwargs)
  
      def get_validation_exclusions(self):
          """
          Return a list of field names to exclude from model validation.
          """
          cls = self.opts.model
          opts = get_concrete_model(cls)._meta
 
</s> remove             instance.full_clean(exclude=self.get_validation_exclusions())
 </s> add             instance.full_clean(exclude=self.get_validation_exclusions(instance)) </s> remove                 and field.required \
 </s> add                 and (field.required or hasattr(instance, field_name)) \
    def get_validation_exclusions(self, instance=None):
              return self.field_mapping[model_field.__class__](**kwargs)
          except KeyError:
              return ModelField(model_field=model_field, **kwargs)
  
    def get_validation_exclusions(self, instance=None):
          """
          Return a list of field names to exclude from model validation.
          """
          cls = self.opts.model
          opts = get_concrete_model(cls)._meta
keep keep keep keep replace keep keep keep keep keep
 Fixed the validation for optional fields that have a value. 
rest_framework/serializers.py