code: def csv_response(self):
          
          def stream():
              """Create data stream generator"""
              stream_file = io.StringIO()
              csvwriter = csv.writer(stream_file, delimiter=',', quotechar='"')
  
              csvwriter.writerow(self.get_current_fields())
  
              for index, item in enumerate(self.items()):
                  csvwriter.writerow([value for index, value in item.items()])
                  stream_file.seek(0)
                  data = stream_file.read()
                  stream_file.seek(0)
                  stream_file.truncate()
                  yield data
  
          response = StreamingHttpResponse(stream(), content_type="text/csv")
          response["Content-Disposition"] = "attachment; filename={}.csv".format(self.get_model_config().model_name.lower())
          return response
docs: Get csv response