How to store image in Django - use link or no?

I have field:

image = models.ImageField(
        max_length=500,
        upload_to='images'
    )

and some settings to upload image to AWS S3 Bucket, where PublicMediaStorage is my custom storage:

PUBLIC_MEDIA_LOCATION = 'media'
AWS_S3_MEDIA_ENDPOINT_URL = env('AWS_S3_MEDIA_ENDPOINT_URL', None)
DEFAULT_FILE_STORAGE = 'new_project.storages.PublicMediaStorage'

I need to store and get my images from database(postgres). For now my image stores at the database like here. And if i write image.url i will get the url of my image(that's why I don't need to store urls of images in my database). But is it right way? Maybe it will be better to store immediately links at the database? Any solutions?

OP is doing well using ImageField . OP might want to add blank=True so that OP's forms don't require the image.

image = models.ImageField(upload_to='images', blank=True)

The reason to use ImageField is that it checks whether the image is valid and also uploads it to the right location, which is something one wouldn't get with a simple URL. That is why the docs mention it requires the Pillow library.

Back to Top