          """
          ret = self._dict_class()
          ret.fields = {}
  
          fields = self.get_fields()
          for field_name, field in fields.items():
              key = self.get_field_key(field_name)
              value = field.field_to_native(obj, field_name)
              ret[key] = value
              ret.fields[key] = field
          return ret
 
</s> remove         for field_name, field in fields.items():
 </s> add         for field_name, field in self.serialize_fields.items(): </s> remove         # TODO: refactor this so we're not determining the fields again
        fields = self.get_fields()

        for field_name, field in fields.items():
 </s> add         for field_name, field in self.serialize_fields.items(): </s> remove         fields = self.get_fields()
 </s> add  </s> remove         for key, val in self.default_fields.items():
 </s> add         for key, val in self.get_default_fields().items(): </s> remove         self.default_fields = self.get_default_fields()
 </s> add         self.serialize_fields = self.get_fields()
        for field_name, field in self.serialize_fields.items():
          """
          ret = self._dict_class()
          ret.fields = {}
  
        for field_name, field in self.serialize_fields.items():
        for field_name, field in self.serialize_fields.items():
              key = self.get_field_key(field_name)
              value = field.field_to_native(obj, field_name)
              ret[key] = value
              ret.fields[key] = field
          return ret
keep keep keep keep replace replace keep keep keep keep keep
 Cache all fields on serializer init, not just default fields. 
rest_framework/serializers.py