          for field_name, field in self.fields.items():
              field_name = field.source or field_name
              if field_name in exclusions \
                  and not field.read_only \
                  and field.required \
                  and not isinstance(field, Serializer):
                  exclusions.remove(field_name)
          return exclusions
  
      def full_clean(self, instance):
 
</s> remove             instance.full_clean(exclude=self.get_validation_exclusions())
 </s> add             instance.full_clean(exclude=self.get_validation_exclusions(instance)) </s> remove     def get_validation_exclusions(self):
 </s> add     def get_validation_exclusions(self, instance=None):
                and (field.required or hasattr(instance, field_name)) \
          for field_name, field in self.fields.items():
              field_name = field.source or field_name
              if field_name in exclusions \
                  and not field.read_only \
                and (field.required or hasattr(instance, field_name)) \
                  and not isinstance(field, Serializer):
                  exclusions.remove(field_name)
          return exclusions
  
      def full_clean(self, 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