code: def get_report_data_rows(self, request, queryset):
          
  
          model = queryset.model
          meta = model._meta
          field_names = set(field.name for field in meta.fields)
          list_report = self.get_list_report(request) or field_names
          queried_field_named = [l for l in list_report if l in field_names] or ['id']
  
          columns = self.get_report_column_builders(request, model)
          headers = [column.header for column in columns]
          rows = []
          for instance in queryset.only(*queried_field_named):
              rows.append([column.fetcher(instance) for column in columns])
  
          return TrackingReportResult(headers=headers, values=rows)
docs: Using the builders for the queryset model, iterates over the queryset to generate a result
            with headers and rows. This queryset must be the exact same received in the .process method,
            which tells us that this function should be called inside .process implementation.
          :param queryset: Provided queryset
          :return: Result with headers and rows