2011-09-04 93 views
0

我在生产服务器上传文件时出现问题。我使用的是Django的stdimage上的模型如下:django'InMemoryUploadedFile'对象没有属性'字段'

class League(models.Model): 
    name = models.CharField(max_length=100) 
    logo = StdImageField(upload_to='images/league_logos', blank=True, size=(220, 120)) 

使用管理应用程序,我可以上传我的本地机器上的模板(使用开发服务器)就好了。在生产中,我有nginx用于静态文件检索,其余部分用mod_wsgi。当试图在作品上传,我得到的

“InMemoryUploadedFile”对象有没有属性“场”

错误。我在apache中拖曳错误日志,当我尝试上传时似乎没有任何事情发生。该错误是在

站点包/ Django的/的contrib /管理/模板/管理员发生/包括/ fieldset.html,误差在19行

这仅仅是一个模板标签访问field.field:

{{ field.field }} 

我不知道如何去调试这个。有什么建议么?

感谢

回答

0

我发现,当我安装PIP我的要求是是由于没有得到安装PIL。这是一个非常令人沮丧的问题,因为错误消息并没有真正让我意识到这一点。

幸运的是我遇到了这个主题:

Why can't I upload jpg files to my Django app via admin/?

其避让我

+0

考虑将此标记为正确答案。 –

0

你可能想传递一个文件系统存储对象 - 那么它知道如何将InMemoryUploadedFile对象转换是它从您的浏览器获取ImageFieldFile,因此它可以保存图像。

# Near top of your file: 
from django.core.files.storage import FileSystemStorage 

fs = FileSystemStorage(location=settings.MEDIA_ROOT) 

# Then in your model: 
    logo = StdImageField(storage = fs, upload_to='images/league_logos', blank=True, size=(220, 120)) 

这应该将上传的文件保存到MEDIA_ROOT/images/league_logos。