2015-10-16 108 views
1
模型

我有以下型號:無法保存InMemoryUploadedFile在Django

class IdentifierImage(models.Model): 
    super = models.ForeignKey(Super) 
    identifier = models.CharField(null=False, blank=False, max_length=32, db_index=True) 
    image = models.ImageField(upload_to='/identifierimages/%Y/%m/', blank=True, null=True,) 

    class Meta: 
     unique_together = (
      ('survey', 'identifier'), 
     ) 

我也有一個形式(而不是ModelForm,將來也不會),其上傳的圖像文件,我把它作爲一個InMemoryUploadedFile。從Super類我創建IdentifierImage對象,並嘗試將其與保存:

def save_identifier_image(identifier, image): 
    identifier_image, created = self.identifierimage_set.update_or_create(identifier=identifier) 
    <logics to remove old images, disabled for current tests> 
    identifier_image.image.save(image.name, image) 

,其中identifier是一個有效的字符串,imageInMemoryUploadedFile

InMemoryUploadedFile的對模型的節省但是失敗SuspiciousFileOperation,並且示出了我:所述接合的路徑(C:/ </identifierimages/%Y/%m/>)位於基座路徑組件(<MEDIA_ROOT>)之外。

爲什麼會發生這種情況?

它爲什麼試圖保存在C:/而不是媒體根目錄下?或者是完全不同的事情?

回答

2

你可能想嘗試,而無需在的ImageField的upload_to路徑中的斜線:「衛生署」

>>> os.path.join("/whatever", "/else") 
'/else' 
+0

我有一個感覺混合和「我愛你」。我不相信我沒有看到。星期一首先會試一試。 – beruic

+0

它應該被添加到我已經花了幾個小時在這個上下文中,這個問題是我放棄的表現,並試圖放下它在週末。現在至少我有一些新的嘗試星期一:-) – beruic

+0

就是這樣。謝謝。 – beruic