Обновление поля модели Django путем загрузки CSV-файла через переопределение change_form.html
Django все еще не является моей суперсилой, поэтому я надеюсь, что некоторые из вас могут помочь мне найти способ достичь моей цели, которая заключается в следующем:
Мне нужно найти способ получить функцию "Upload file" в шаблоне администратора Django change_form.html
. Загрузив этот файл, мое приложение сможет обновить body
конкретный экземпляр модели Content
(с полями id
, title
и body
).
Я уже реализовал решение похожей проблемы, которая заключается в том, как добавить новые объекты, нажав на пользовательскую кнопку "Upload csv" в панели администратора. Я добился этого, следуя этому решению:
Я добавил это в файл приложения admin.py
:
(Вы, наверное, заметили, что я не обрабатываю загруженный CSV файл, а просто сохраняю его тело как поле body экземпляра моей модели, что как раз то, что мне нужно)
Затем я переопределяю admin/change_list.html
шаблон:
{% extends 'admin/change_list.html' %}
{% block object-tools %}
<form action="upload-csv/" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ csv_upload_form }}
<input type="submit" value="Upload">
</form>
{{ block.super }}
{% endblock %}
Это работает нормально; я могу создавать новые объекты в моей базе данных. Но я также хочу иметь возможность обновлять тело любого экземпляра из другого CSV файла. Чтобы достичь этого, я просто попытался скопировать вышеприведенное решение, поэтому я добавил еще один класс в мой admin.py
файл:
и затем аналогично переопределить admin/change_form.html
:
{% extends 'admin/change_form.html' %}
{% block object-tools %}
<form action="upload-csv/" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ csv_update_form }}
<input type="submit" value="Upload">
</form>
{{ block.super }}
{% endblock %}
Первая проблема: нет пользовательской кнопки "Update file" для выбора файла на странице администратора объекта, несмотря на то, что я пытаюсь получить ее через тег в перезаписанном шаблоне change_form.html
. У меня есть только html-кнопка submit для загрузки выбранного файла. Когда я нажимаю на нее, у меня возникает ошибка "Содержимое с ID "2/change/upload-csv" не существует. Возможно, оно было удалено?", что говорит о том, что я все перепутал, но я не могу найти способ научиться чему-либо из этого беспорядка, к сожалению. Я буду очень благодарен за любые советы, которые подтолкнут меня на путь обучения, спасибо!