2013-05-06 44 views
0

我正在從舊網站遷移到新網站,這包括移動大量徽標/圖片/ PDF等。在舊網站上,我使用base64編碼導出這些文件,而我的基礎版64則在新網站上對它們進行解碼。到現在爲止還挺好。一切似乎都行得通。Django「手動」上傳的文件不會將upload_to加入帳戶

但是,由於某些原因,文件結束了我的MEDIA_ROOT而不是MEDIA_ROOT /。所以這意味着我的MEDIA_ROOT中有幾千個文件,並不好。

的代碼的位:

ntf = NamedTemporaryFile(delete=True) 
ntf.write(base64.standard_b64decode(obj['logo'])) 
ntf.flush() 
c.logo.save('photo-{0}.img'.format(c.id), File(ntf)) 

在這種情況下,c是一個Django模型實例,並logo是ImageField的。 Django的模型c的定義:

class C(models.Model): 
    def file_path(self, filename=None): 
     return (format(self.id).join(['c_obj', '.jpg'])).lower() 

    name = models.CharField(_(u'name'), max_length=150) 
    logo = models.ImageField(_(u'logo'), upload_to=file_path, null=True, blank=True) 

任何人誰可以告訴我這是怎麼回事錯在這裏?

回答

1

您的file_path函數未返回目錄名稱。它返回'c_obj13.jpg'(當self.id是13時)。因此,沒有目錄(注意沒有目錄分隔符)。