4

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

例如:

DEFAULT_PICTURE = 'default.jpg'

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

get_picture() 应该返回什么与 easy_thumbnails 兼容的对象?
我试图创建一个新的 File 对象,就像这里一样,但是没有用。
您能否提供一个返回现有文件以使用 easy_thumbnails 显示的工作示例?

4

2 回答 2

6

Chris ( easy_thumbnails )在这里回答,也在SO上回答。

他创建新 ImageFieldFile 的建议很好,但由于新创建的 ImageFieldFile 有一个空实例,easy_thumbnails 仍然失败。
所以要么设置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
于 2013-11-14T14:10:17.110 回答
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适当的路径。

于 2013-11-13T15:01:58.113 回答