我正在使用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有一些小麻烦,但它现在似乎工作正常。谢谢!
答案 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__'