Как я могу отобразить html, который расширяет 'admin/change_list.html'?

У меня есть требование, где я принимаю загрузку CSV файла и делаю валидацию на нем, прежде чем персистировать его в БД.

Моя страница администратора выглядит следующим образом:

Я добавил эту Upload With CSV кнопку.

enter image description here

Когда я нажимаю на это, я попадаю на страницу, которая выглядит следующим образом.

enter image description here

Здесь я хочу перенаправить обратно на страницу списка изменений администратора и уведомить пользователя, что он/она успешно добавил объекты, вот так.

enter image description here

Однако в настоящее время мой код не отображается так, как я хочу.

Мой код выглядит следующим образом:

    def upload_csv(self, request):
        form = CsvImportForm()
        data = {"form": form}

        if csv_file := request.FILES.get("csv_upload"):
            csv_data = read_csv(csv_file)
            serializer = CampaignProductCSVUploadSerializer(data=csv_data, many=True)

            try:
                with transaction.atomic():
                    serializer.is_valid(raise_exception=True)
                    old_campaign_id = serializer.return_previous_campaign_id()

                    processed: List[CampaignProduct] = []
                    for row in csv_data:
                        code = row.get("code")
                        if code is None or not isinstance(code, str) or code.strip() == "":
                            raise serializers.ValidationError(gettext_lazy("Each CampaignProduct object needs to have "
                                                                           "a code."))

                        obj, *_ = CampaignProduct.objects.update_or_create(
                            code=row["code"],
                            campaign_id=row["campaign"],
                            defaults={
                                "name": row["name"],
                                "type": row["type"],
                                "is_active": True
                            }
                        )
                        processed.append(obj.id)
                    CampaignProduct.objects.exclude(id__in=processed).filter(campaign_id=old_campaign_id).update(
                        is_active=False)

            except Exception as e:
                raise e

            return render(request, "admin/csv_upload_success.html", data)

        return render(request, "admin/csv_upload.html", data)

<1>> выглядит следующим образом:csv_upload_success.html

enter image description here

Но когда я загружаю CSV файл, я получаю ошибку следующего вида:

enter image description here

Почему я не могу просто визуализировать csv_upload_success.html? Хотя я могу успешно вывести csv_upload.html.

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