Django:强制找到Unicode NoneType

时间:2011-08-30 16:39:56

标签: django

我正在使用django-stdimage2重命名和调整项目中的图片大小。它具有通过Django Admin界面删除图像的功能:只需选中一个复选框,然后单击保存。

我可以使用Django Admin成功添加图像但是当我尝试删除图像时会返回此错误:

错误消息

/ admin / app / gear_images / 1 /
的TypeError 强制转换为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

谢谢: - )

1 个答案:

答案 0 :(得分:5)

由于图像不存在,它正在尝试将“无”(NULL项)转换为unicode,这不起作用。你可以用以下方法测试它:

def __unicode(self)__:
    if self.image is None:
        return "None"
    else:
        return self.image.name