Как хранить изображение в Django - использовать ссылку или нет?
У меня есть поле:
image = models.ImageField(
max_length=500,
upload_to='images'
)
и некоторые настройки для загрузки изображения в AWS S3 Bucket, где PublicMediaStorage
- мое пользовательское хранилище:
PUBLIC_MEDIA_LOCATION = 'media'
AWS_S3_MEDIA_ENDPOINT_URL = env('AWS_S3_MEDIA_ENDPOINT_URL', None)
DEFAULT_FILE_STORAGE = 'new_project.storages.PublicMediaStorage'
Мне нужно хранить и получать изображения из базы данных (postgres).
На данный момент мои изображения хранятся в базе данных следующим образом
Здесь.
А если я напишу image.url
, то получу url моего изображения (поэтому мне не нужно хранить url изображений в базе данных).
Но правильно ли это? Может быть, лучше сразу хранить ссылки в базе данных? Есть решения?
OP хорошо справляется с использованием ImageField
. ОП может захотеть добавить blank=True
, чтобы формы ОП не требовали изображения.
image = models.ImageField(upload_to='images', blank=True)
Причина использования ImageField
заключается в том, что она проверяет, является ли изображение действительным, а также загружает его в нужное место, чего нельзя получить при использовании простого URL. Вот почему в документации упоминается, что для этого требуется библиотека Pillow.