Django - 动态设置FileField的upload_to
比如说,我有两个Django应用。
- project
-- photo
-- attachments
然后我创建了一个模型,用来存放我的临时文件。
# python 3.4
class UploadedFiles(models.Model):
file = models.FileField(upload_to='photo/%Y/%m/%d')
但是我想把这个表用来存储所有上传的文件,并且想动态地改变upload_to
的路径。
我考虑了一下,然后写了这个。
# python 3.4
def get_path(instance, filename):
filename, file_ext = os.path.splitext(filename)
return instance.path.format(filename, file_ext)
class UploadedFiles(models.Model):
path = models.CharField(max_length=100)
file = models.FileField(upload_to=get_path, blank=True)
首先,我创建了一个新的条目。
# python 3.4
uf = UploadedFiles.path = 'attachments/%Y/%m/%d/{0}.blabla.{1}'
uf.save()
接下来,我保存文件。
uf.file = file
uf.save()
好的,这样可以运行,但看起来很糟糕。我该怎么做才能让它看起来正常一些呢?
谢谢!
1 个回答
0
你是指这个吗?
from django.core.files import File, ContentFile
uf = UploadedFiles(path='...', file=File(fp))
# Or
uf = UploadedFiles(path='...', file=ContentFile(file_content))
uf.save()
另外,如果我没记错的话,'%Y'
在你把 upload_to
设置为一个函数时是不能用的。