我正在使用ImageField
在我的模特上存储个人资料图片。
如果没有定义图像,如何将其设置为返回默认图像?
答案 0 :(得分:30)
我没试过这个,但我相信你可以把它设置为你所在领域的默认设置。
pic = models.ImageField(upload_to='blah', default='path/to/my/default/image.jpg')
编辑:愚蠢的StackOverflow不会让我评论其他人的答案,但那个旧片段不是你想要的。我强烈推荐django-imagekit,因为它可以非常轻松,干净地完成大量的图像调整和操作。
答案 1 :(得分:8)
理论上,您也可以在模型定义中使用函数。但我不知道这是不是很好的做法:
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进行缩略图生成并取得了巨大成功
答案 2 :(得分:3)
你可以在你看来尝试这个:
{% ifequal object.image None %}
<img src="DEFAULT_IMAGE" />
{% else %}
display image
{% endifequal %}
答案 3 :(得分:2)
在您的图片栏
中field = models.ImageField(upload_to='xyz',default='default.jpg')
注意:路径应位于MEDIA_ROOT内。
答案 4 :(得分:2)
在models.py
中image = models.ImageField(upload_to='profile_pic', default='default.jpg')
在settings.py中添加以下内容:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
现在, 手动将名称为“默认”的图像添加到媒体文件夹中。
答案 5 :(得分:0)
您可以使用&#39;默认&#39;提供初始值。参数。 如果已有图像并且您想将其设置为默认值(而不是删除它),您可以尝试这样的事情:
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()
。