0

我正在使用 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 Imaging Library。我可以很好地定义我的模型,但是当我尝试通过内置管理站点添加图像时,我在点击保存时收到以下错误: TypeError: 'ImageFieldFile' object has no attribute '__getitem__' 我不明白为什么我会看到这个错误,因为我从不要求getitem的 属性,我所有的其他字段都可以正常工作——只有 ImageField 会导致 TypeError 有任何想法吗?这可能是我的 PIL 安装的问题吗?我在 Mac 上,一开始安装 PIL 时遇到了一些小困难,但现在它似乎工作正常。谢谢!

4

2 回答 2

0

实现该方法的类__getitem__允许您在其上使用数组索引。所以MyClass[4](大致)相当于MyClass.__getitem__[4].

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

于 2013-07-08T12:55:15.320 回答
0

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

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

于 2014-06-07T08:44:47.543 回答