2016-01-23 155 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添加一个自定义文件夹名称。