Как добавить изображение для поля image для экземпляра модели в админпанель django на heroku?

Я добавил несколько книг о данных heroku. Каждая модель отображается на сайте heroku app с ее изображением. Мои модели имеют поле "image". Я беру эти изображения из папки на ПК и когда я открываю это приложение через 2-3 часа изображения книг исчезают. Я думаю, что это происходит потому, что я выключаю ПК, с которого я взял эти изображения. Как мне правильно сделать, чтобы эти изображения не исчезали?

Думаю, это из-за того, что я выключаю компьютер, на котором я сделал эти снимки

.

Вероятно, дело не в этом, потому что у Heroku нет доступа к файлам на вашем компьютере.


Когда вы загружаете файл в админку Django, она смотрит на конфигурацию настроек DEFAULT_FILE_STORAGE, чтобы определить, как хранить этот файл. По умолчанию использует django.core.files.storage.FileSystemStorage, что означает, что он записывает загруженные файлы в файловую систему dyno в место, определенное MEDIA_ROOT.

Проблема в том, что dynos эфемерны, и они могут быть уничтожены, перезапущены и перемещены без предупреждения, что заменяет вашу файловую систему. Это означает, что загруженные файлы просто удаляются без следа, но ссылка ImageField все еще думает, что они там.

Решением этой проблемы является обновление DEFAULT_FILE_STORAGE проекта для использования чего-то постоянного, например, s3-совместимого хранилища объектов. В стране Heroku & Django распространенным решением является использование django-storages вместе с дополнением Bucketeer от Heroku. Это решение загружает ваши файлы в постоянное хранилище данных, которое выдерживает перезагрузки dyno, вместо записи в файловую систему dyno, которая часто удаляется.

Я знаю, что это может быть сложно, но в этой статье есть довольно хорошее описание процесса, к которому я часто возвращаюсь. Я вижу, что нет хорошего учебника по Heroku + Bucketeer, поэтому я могу быстро написать его и отредактировать этот комментарий, чтобы сделать вашу жизнь проще.

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