繁体   English   中英

Django图像字段引发TypeError

[英]Django image field throws 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 Imaging Library。 我可以很好地定义模型,但是当我尝试通过内置管理站点添加图像时,在单击保存时出现以下错误: TypeError: 'ImageFieldFile' object has no attribute '__getitem__'我不明白为什么我看到了这个错误,因为我从不要求使用getitem '属性,并且我所有其他字段都正常工作-只是ImageField导致TypeError。 有任何想法吗? 我的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__'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM