Django easy_thumbnails的默认图片

时间:2013-11-13 14:51:17

标签: django easy-thumbnails

我有一个使用easy_thumbnails(| thumbnail_url)显示的ImageField模型。
我的问题是如果ImageField为空,我该如何显示默认图像? 我希望在模型/视图中使用此逻辑,在html /模板中 NOT

e.g:

DEFAULT_PICTURE = 'default.jpg'

def get_picture(self):
    if self.picture:
        return self.picture
    else:
        from DEFAULT_PICTURE

get_picture()返回哪个对象与easy_thumbnails兼容?
我尝试创建一个新的File对象,如here,但它不起作用 您能否提供一个返回现有文件的工作示例,以便使用easy_thumbnails显示?

2 个答案:

答案 0 :(得分:6)

Chris(easy_thumbnails)回答here,同时回答SO

他建议创建一个新的ImageFieldFile很好,但是easy_thumbnails stilled失败了,因为新创建的ImageFieldFile有一个空实例。
所以要么设置instance = self

DEFAULT_PICTURE = 'default.jpg'

def get_picture(self):
    if self.picture:
        return self.picture
    else:
        return ImageFieldFile(instance=self, field=FileField(), name=DEFAULT_PICTURE)

或更改alias.py第116行:

if not hasattr(target, 'instance'):
    return None

应该是......

if not hasattr(target, 'instance') or not target.instance:
    return None

答案 1 :(得分:1)

这是我之前使用过的代码。它可能有点优化(可能不应该有硬编码的媒体路径),但它适用于我的小项目。

def get_picture(self):
    if self.picture:
         return '<img src="%s" />' % self.picture['thumbnail'].url
    return '{img src="/media/img/admin/icon-no.gif" alt="No Image"}' 

有了这个,你只需要确保在适当的路径中有icon-no.gif