2
我正在使用django-stdimage2在我的项目中重命名和调整图像大小。它具有通过Django Admin界面删除图像的功能:只需勾选一个复选框并单击保存即可。Django:强制转换Unicode找不到类型
我可以成功添加使用Django管理的图像,但是当我尝试删除返回此错误的图像:
错误消息
类型错误在/管理/应用/ gear_images/1/
强迫为Unicode:需要字符串或缓冲区,NoneType发现
型号
class gear_images(models.Model):
def __unicode__(self):
return self.image.name
gear_id = models.ForeignKey(gear)
image = StdImageField(upload_to='images/gear', blank=True, size=(640, 480, True), thumbnail_size=(100, 100, True))
description = models.CharField(max_length=100)
可能的原因
我假定返回一个错误,因为图像已经从数据库中删除,因此没有返回。
修复?
什么是正确的方法来编码这种情况?
编辑:找到解决方案。谢谢Vanessa!
def __unicode__(self):
if self.image is None:
return "None"
elif self.image.name is None:
return "None"
else:
return self.image.name
谢谢:-)
谢谢你,凡妮莎!请参阅我上面的编辑。你认为这是一个很好的解决方案吗? –
你想先检查self.image是否为None,如果不是,请检查self.image.name是否为None,以确保安全。如果self.image为None,那么不会有self.image.name这样的东西(因为None没有任何属性),所以如果你试图检查self.image.name,你将会得到一个错误。 –
再次感谢!我修改了上面的代码。 –