2011-09-04 91 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。