Django - 上传文件 - 更改名称

Django - UploadFile - Change name

我需要用变量名重命名文件。

我有这个:

    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/Left/user_ImageLeft.[格式]

我有 20 张图像,我不想创建 20 个函数来手动写入变量的名称。

谢谢

刚刚测试过这个,最好的方法似乎是使用可解构的class(可解构的用于防止迁移错误):

@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/') 的参数,并在可解构中使用 format() 以添加自定义文件夹名称。