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()
以添加自定义文件夹名称。
我需要用变量名重命名文件。
我有这个:
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()
以添加自定义文件夹名称。