Django 图像字段抛出 TypeError



我正在用django写一个简单的网站来显示一些图片。在我的模型中,我定义了一个图像模型和一个类别模型,以允许我对每个图像进行分类:

class Image(models.Model):
    title = models.CharField(max_length=200)
    image = models.ImageField(upload_to='images')
    tags = models.ManyToManyField(Category)

我想使用 django 内置的 ImageField 字段附加实际的图像字段django.db.models.ImageField而该字段又使用 Python 映像库。我可以很好地定义我的模型,但是当我尝试通过内置管理站点添加图像时,在点击保存时出现以下错误: TypeError: 'ImageFieldFile' object has no attribute '__getitem__'我不明白为什么我会看到这个错误,因为我从不要求getitem' 属性,以及我所有其他字段都工作正常 - 只有图像字段导致类型错误。有什么想法吗?这可能是我的PIL安装有问题吗?我在Mac上,首先在安装PIL时遇到了一些小困难,但现在似乎工作正常。谢谢!

实现

方法的类__getitem__允许您在其上使用数组索引。 所以MyClass[4](大致(等同于MyClass.__getitem__[4].

确保您没有意外尝试在 ImageField/ImageFieldFile 上使用数组索引器。

我在这个类中遇到了类似的问题:

class Photo(models.Model):
    image_location = models.ImageField(upload_to='pix/%Y/%m/%d')
    caption = models.CharField(max_length=100)
    object = Manager()

看到错误可能是因为您返回了一个模型对象(例如:照片对象(:

#returning model object(eg: Photo object)
def __unicode__(self):
    return self.image_location

而不是 unicode 字符串(例如:/Path/to/my/pix(:

#returning unicode string instead of model object(eg: /Path/to/my/pix)
def __unicode__(self):
    return unicode(self.image_location)

这是帮助我的StackOverflow答案的链接:TypeError 'x'对象没有属性'__getitem__'

相关内容