Я использую ImageField
для хранения изображений профиля на моей модели.
Как мне установить его для возврата изображения по умолчанию, если изображение не определено?
Я использую ImageField
для хранения изображений профиля на моей модели.
Как мне установить его для возврата изображения по умолчанию, если изображение не определено?
Я не пробовал это, но я уверен, что вы можете просто установить его как значение по умолчанию в своем поле.
pic = models.ImageField(upload_to='blah', default='path/to/my/default/image.jpg')
EDIT: Stupid StackOverflow не позволит мне прокомментировать ответы других людей, но этот старый фрагмент не то, что вы хотите. Я настоятельно рекомендую django-imagekit, потому что он очень легко и чисто обрабатывает тонны большого размера изображения и манипуляции.
Теоретически вы также можете использовать функцию в определении модели. Но я не знаю, является ли это хорошей практикой:
class Image(model.Models):
image = ....
def getImage(self):
if not self.image:
# depending on your template
return default_path or default_image_object
а затем внутри шаблона
<img src="img.getImage" />
Это дает вам большую гибкость в будущем...
Я использую sorl для создания эскизов с большим успехом
вы можете попробовать это в своем представлении:
{% ifequal object.image None %}
<img src="DEFAULT_IMAGE" />
{% else %}
display image
{% endifequal %}
Вы можете указать начальное значение с параметром "по умолчанию". Если изображение уже есть, и вы хотите установить его по умолчанию (вместо его удаления), вы можете попробовать что-то вроде этого:
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()
Тогда вы можете использовать set_image_to_default()
вместо image.delete()
, если вы предпочитаете по умолчанию.