Django: Default ImageField Return

Question:

I have a Django ImageField with djangorestframework, and I want it to return a default image if it’s none. How can I return an image from my staticfiles to replace this?

class MyModel(models.Model):
    image = models.ImageField()
    ...

    def get_image(self):
        """
        Returns an image, or the default image.
        """
        if not self.image:
            # what goes here? <---
        return self.image
Asked By: aroooo

||

Answers:

set default in model field.

class MyModel(models.Model):
    image = models.ImageField(default='path/to/static/image.jpg')

Update-1

from django.conf import settings


class MyModel(models.Model):
    image = models.ImageField(blank=True)
    ...

    def get_image(self):
        if not self.image:
            return f'{settings.STATIC_URL}sample/img/default.png'
        return self.image.url
Answered By: JPG

models.py

class The_image_model(models.Model):
    image = models.ImageField(upload_to='images', blank=True)
    ...

views.py

def get_the_image(request):
    get_images = The_image_model.objects.all()
    ...
return render(request, 'imageTemplate.html', {'get_images':get_images})

In imageTemplate.html:

{% load static %}


{% if get_images.images.url  %}
   <img class="img-fluid rounded mb-3 mb-md-0" src="{{ get_images.images.url}}" 
alt="">
{% else %}
   <img class="img-fluid rounded mb-3 mb-md-0" src="{% static 'image/empty-image.jpg' %}" 
alt="">
{% endif %}


Answered By: Elias Prado
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.