Как обрабатывать несколько выбранных пользователем действий при обновлении базы данных через 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, но я только начал изучать его для этого проекта, поэтому я не знаю, как

Заранее спасибо за любую информацию, которую вы можете предложить!

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