Image par défaut pour ImageField dans L'ORM de Django
j'utilise un ImageField
pour stocker les photos de profil sur mon modèle.
Comment puis-je retourner une image par défaut si aucune image n'est-elle définie?
5 réponses
Je n'ai pas essayé cela, mais je suis relativement sûr que vous pouvez le Définir comme un défaut dans votre domaine.
pic = models.ImageField(upload_to='blah', default='path/to/my/default/image.jpg')
EDIT: Stupide StackOverflow ne me laisse pas de commentaires sur les réponses des autres, mais que les vieux extrait n'est pas ce que vous voulez. Je recommande fortement django-imagekit parce qu'il fait des tonnes de bonnes choses de redimensionnement et de manipulation d'image très facilement et proprement.
vous pourriez théoriquement aussi utiliser une fonction dans votre définition de modèle. Mais je ne sais pas si c'est une bonne pratique:
class Image(model.Models):
image = ....
def getImage(self):
if not self.image:
# depending on your template
return default_path or default_image_object
et puis, à l'intérieur d'un modèle
<img src="img.getImage" />
Cela vous donne une grande flexibilité pour l'avenir...
j'utilise sorl pour la génération de vignettes avec un grand succès
vous pouvez essayer ce à votre avis:
{% ifequal object.image None %}
<img src="DEFAULT_IMAGE" />
{% else %}
display image
{% endifequal %}
vous pouvez fournir une valeur initiale avec le paramètre 'default'. S'il y a déjà une image et que vous voulez la définir par défaut (au lieu de la supprimer), vous pouvez essayer quelque chose comme ceci:
DEFAULT = 'img/default.jpg'
class Example(models.Model):
image = models.ImageField(default=DEFAULT)
def set_image_to_default(self):
self.image.delete(save=False) # delete old image file
self.image = DEFAULT
self.save()
alors vous pouvez utiliser set_image_to_default()
au lieu de image.delete()
si vous préférez la valeur par défaut.
dans votre champ d'image
field = models.ImageField(upload_to='xyz',default='default.jpg')
Note: le chemin doit être à L'intérieur de MEDIA_ROOT.