Как я могу отобразить html, который расширяет 'admin/change_list.html'?
У меня есть требование, где я принимаю загрузку CSV файла и делаю валидацию на нем, прежде чем персистировать его в БД.
Моя страница администратора выглядит следующим образом:
Я добавил эту Upload With CSV
кнопку.
Когда я нажимаю на это, я попадаю на страницу, которая выглядит следующим образом.
Здесь я хочу перенаправить обратно на страницу списка изменений администратора и уведомить пользователя, что он/она успешно добавил объекты, вот так.
Однако в настоящее время мой код не отображается так, как я хочу.
Мой код выглядит следующим образом:
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
Но когда я загружаю CSV файл, я получаю ошибку следующего вида:
Почему я не могу просто визуализировать csv_upload_success.html
? Хотя я могу успешно вывести csv_upload.html
.