                  (field_name, field.get_value(self._initial_data))
                  for field_name, field in self.fields.items()
                  if field.get_value(self._initial_data) is not empty
              ], serializer=self)
  
          return ReturnDict([
              (field.field_name, field.get_initial())
 
</s> remove             if not field.write_only
 </s> add             if not field.read_only </s> remove                 # Get a read-only version of the serializer
 </s> add  </s> remove                 if instance is None:
                    for name, field in serializer.fields.items():
                        if getattr(field, 'read_only', None):
                            del serializer.fields[name]
 </s> add 
                and not field.read_only
                  (field_name, field.get_value(self._initial_data))
                  for field_name, field in self.fields.items()
                  if field.get_value(self._initial_data) is not empty
                and not field.read_only
              ], serializer=self)
  
          return ReturnDict([
              (field.field_name, field.get_initial())
keep keep add keep keep keep keep
 Fix initial data on serializers to reflect writable fields 
rest_framework/serializers.py