2016-01-23 187 views
1

我需要用變量的名稱重命名文件。Django - 上傳文件 - 更改名稱

我有這樣的:

def content_file_name_Left(instance, filename): 
     return 'user_{0}/Left/{1}'.format(instance.ID, filename) 

... 

    user_ImageLeft = models.FileField(default='', upload_to=content_file_name_Left) 

我想,它的保存:user_x /左/ user_ImageLeft [格式]

我有20幅圖像,我不想讓20個功能用於手動寫入變量的名稱。

感謝

+0

什麼是你的問題? – Wtower

回答

0

剛剛測試過這一點,最好的辦法似乎是通過使用deconstructible類(deconstructible是用來防止遷移錯誤):

@deconstructible 
class PathAndUniqueFilename(object): 
    def __init__(self, sub_path): 
     self.path = sub_path 

    def __call__(self, instance, filename): 
     self.path = self.path.format(instance.user.id) 
     return os.path.join(self.path, filename) 

,然後調用這個模型中,像這樣:

user_ImageLeft = models.FileField(default='', upload_to=PathAndUniqueFilename('user_{0}/Left/')) 

這樣做有什麼需要的PathAndUniqueFilename('user_{0}/Left/')的參數,並在奧德的deconstructible使用format() r添加一個自定義文件夾名稱。