              # Set up the field
              field.initialize(parent=self, field_name=key)
  
          # Add in the default fields
          fields = self.default_fields(nested)
          for key, val in fields.items():
              if key not in ret:
                  ret[key] = val
  
          # If 'fields' is specified, use those fields, in that order.
          if self.opts.fields:
 
</s> remove         fields = self.get_fields(nested=bool(self.opts.depth))
 </s> add         fields = self.get_fields() </s> remove         fields = self.get_fields(nested=bool(self.opts.depth))
 </s> add         fields = self.get_fields() </s> remove         # TODO: Modify this so that it's called on init, and drop
        #       serialize/obj/data arguments.
        #
        #       We *could* provide a hook for dynamic fields, but
        #       it'd be nice if the default was to generate fields statically
        #       at the point of __init__
 </s> add  </s> remove         plus the set of fields returned by default_fields().
 </s> add         plus the set of fields returned by get_default_fields().
        for key, val in self.default_fields.items():
              # Set up the field
              field.initialize(parent=self, field_name=key)
  
          # Add in the default fields
        for key, val in self.default_fields.items():
        for key, val in self.default_fields.items():
              if key not in ret:
                  ret[key] = val
  
          # If 'fields' is specified, use those fields, in that order.
          if self.opts.fields:
keep keep keep keep replace replace keep keep keep keep keep
 Cache default fields per serializer instance for improved performance 
rest_framework/serializers.py