  
          if self.many is not None:
              many = self.many
          else:
              many = hasattr(obj, '__iter__') and not isinstance(obj, (Page, dict, six.text_type))
  
          if many:
              return [self.to_native(item) for item in obj]
          return self.to_native(obj)
  
 
</s> remove             return [self.to_native(item) for item in obj]
        return self.to_native(obj)
 </s> add             return [self.to_native(item) for item in value]
        return self.to_native(value)

    def field_from_native(self, data, files, field_name, into):
        if self.read_only:
            return

        try:
            value = data[field_name]
        except KeyError:
            if self.required:
                raise ValidationError(self.error_messages['required'])
            return

        if self.parent.object:
            # Set the serializer object if it exists
            obj = getattr(self.parent.object, field_name)
            self.object = obj

        if value in (None, ''):
            into[(self.source or field_name)] = None
        else:
            kwargs = {
                'data': value,
                'context': self.context,
                'partial': self.partial,
                'many': self.many
            }
            serializer = self.__class__(**kwargs)

            if serializer.is_valid():
                self.object = serializer.object
                into[self.source or field_name] = serializer.object
            else:
                # Propagate errors up to our parent
                raise NestedValidationError(serializer.errors) </s> remove         if obj is None:
 </s> add         if value is None: </s> remove         # If the object has an "all" method, assume it's a relationship
        if is_simple_callable(getattr(obj, 'all', None)):
            return [self.to_native(item) for item in obj.all()]
 </s> add         if is_simple_callable(getattr(value, 'all', None)):
            return [self.to_native(item) for item in value.all()] </s> remove             if self.source:
                for component in self.source.split('.'):
                    obj = getattr(obj, component)
                    if is_simple_callable(obj):
                        obj = obj()
            else:
                obj = getattr(obj, field_name)
                if is_simple_callable(obj):
                    obj = obj()
 </s> add             source = self.source or field_name
            value = obj

            for component in source.split('.'):
                value = get_component(value, component)
                if value is None:
                    break </s> remove class BaseSerializer(Field):
 </s> add class BaseSerializer(WritableField):
            many = hasattr(value, '__iter__') and not isinstance(value, (Page, dict, six.text_type))
  
          if self.many is not None:
              many = self.many
          else:
            many = hasattr(value, '__iter__') and not isinstance(value, (Page, dict, six.text_type))
  
          if many:
              return [self.to_native(item) for item in obj]
          return self.to_native(obj)
  
keep keep keep keep replace keep keep keep keep keep
 Initial support for writable nested serialization (Not ModelSerializer) 
rest_framework/serializers.py