Создание списка объектов из загруженного файла csv

У меня есть модель под названием leads. Я загружаю их через CSV. Проблема в том, что я хотел бы назвать каждый из списков лидов при загрузке, чтобы я мог фильтровать и просматривать конкретные списки.

Models.py

class Lead(models.Model):
  first_name = models.CharField(max_length=20)
  last_name = models.CharField(max_length=20)
  address = models.CharField(default=0, max_length=50)
  city = models.CharField(max_length=30, default="")
  state = models.CharField(max_length=20, default="")
  zipcode = models.IntegerField(default=0)
  phone = models.CharField(max_length=10, null=True, default="", blank=True)
  email = models.EmailField(default="")

  def __str__(self):
   return f"{self.first_name} {self.last_name}"

View.py

def csv_upload(request):

  template = "leads/lead_csv_upload.html"
  data = Lead.objects.all()

  prompt = {
    'order': 'Order of the CSV should be name, email, address,    phone, profile',
    'profiles': data    
          }
  if request.method == "GET":
    return render(request, template, prompt)
  csv_file = request.FILES['file']

  if not csv_file.name.endswith('.csv'):
    messages.error(request, 'THIS IS NOT A CSV FILE')
  data_set = csv_file.read().decode('UTF-8')
  io_string = io.StringIO(data_set)
  next(io_string)
  for column in csv.reader(io_string, delimiter=',', quotechar="|"):
    _, created = Lead.objects.update_or_create(
        first_name=column[0],
        last_name=column[1],
        address=column[2],
        city=column[3],
        state=column[4],
        zipcode=column[5],
        phone=column[6],
        email=column[7],
  
    )
  context = {}
  return render(request, template, context)

Поскольку вы используете update или create, вы можете просто добавить значение с именем списка и затем вы можете фильтровать по нему, поэтому во фронтенде вам нужно создать input и передать его вместе с csv в бэкенд.

Вернуться на верх