          so that subclasses can override `.restore_object()`, and still get
          the full_clean validation checking.
          """
          try:
              instance.full_clean(exclude=self.get_validation_exclusions())
          except ValidationError as err:
              self._errors = err.message_dict
              return None
          return instance
  
 
</s> remove     def get_validation_exclusions(self):
 </s> add     def get_validation_exclusions(self, instance=None): </s> remove                 and field.required \
 </s> add                 and (field.required or hasattr(instance, field_name)) \
            instance.full_clean(exclude=self.get_validation_exclusions(instance))
          so that subclasses can override `.restore_object()`, and still get
          the full_clean validation checking.
          """
          try:
            instance.full_clean(exclude=self.get_validation_exclusions(instance))
          except ValidationError as err:
              self._errors = err.message_dict
              return None
          return instance
  
keep keep keep keep replace keep keep keep keep keep
 Fixed the validation for optional fields that have a value. 
rest_framework/serializers.py