我需要使用变量名称重命名该文件。
我有这个:
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个函数手动写入变量的名称。
由于
答案 0 :(得分:0)
刚试过这个,最好的方法似乎是使用可解构的类(解构可用于防止迁移错误):
@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()
以添加自定义文件夹名称。