我有一个使用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显示?
答案 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
。