Как хранить изображение в 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.

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