Как обрабатывать несколько выбранных пользователем действий при обновлении базы данных через CSV?
Я работаю над базой данных шоу, в которой есть модели для актеров, персонажей и шоу.
Я пытаюсь реализовать функцию Bulk Upload, которая принимает CSV-файл. Я начинаю с массовой загрузки шоу, вот соответствующая модель:
class Show(models.Model:
title = models.CharField(max_length=2083, blank=True, null=True)
blurb = RichTextField(blank=True)
website = models.CharField(max_length=2083, blank=True, null=True)
host = models.ManyToManyField('Host', through='ShowHosts', blank=True)
В настоящее время при отправке файла сайт сверяет поля 'Title' и 'Host' с существующими записями в базе данных и, если дубликатов нет, создает новый экземпляр 'Show' и 'Host' и присваивает новый 'Host' новому 'Show'.
Мне нужна помощь в том, что происходит, когда найден дубликат. Вот как я хотел бы с этим справиться:
Пользователь перенаправляется на новую страницу, содержащую таблицу. Каждая строка имеет три столбца; первый содержит dict, состоящий из загруженной информации для нового шоу, второй - объект модели дубликата Show/Host, который уже был найден в базе данных, третий - элемент, предлагающий пользователю выбрать, как он хотел бы обработать дубликат. Вот пример результатов, когда одна из строк файла возвращает дубликат Title, а другая строка возвращает дубликат Host
Uploaded Show | Existing Record | Action |
---|---|---|
{upload_row: '1', title: 'A Show Called Something', host: 'Mr. Person'} | Show: "A Show Called Something" | [Select Action] |
{upload_row: '4', title: 'A New Show', host: 'Some Guy'} | Host: "Some Guy" | [Select Action] |
Мне удалось сгенерировать эту таблицу, но я не могу понять, как обрабатывать процесс выбора действия. Предположим, что пользователь хочет подтвердить, что 'A Show Called Something' - это новое шоу с тем же названием, что и существующая запись, но что 'Some Guy' - это тот же человек, который был найден в базе данных.
В столбце "Действие" я хотел бы, чтобы пользователь мог выбрать "Создать новую запись" для первой строки и "Использовать существующую запись" для второй строки. У меня уже есть рабочие функции для каждого из этих вариантов, я просто не знаю, как позволить пользователю сделать свой выбор и затем передать соответствующие словари в соответствующие функции.
У меня есть ощущение, что мое решение будет как-то связано с использованием jquery, но я только начал изучать его для этого проекта, поэтому я не знаю, как
Заранее спасибо за любую информацию, которую вы можете предложить!