Django图像字段抛出TypeError

时间:2013-07-08 07:19:37

标签: python django python-imaging-library

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

    object = Manager()

您可能因为您正在返回模型对象(例如:Photo对象)而看到错误:

#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' object has no attribute '__getitem__'