例如我必须使用django应用程序
- project
-- photo
-- attachments
我创建模型,我保留我的tmp文件
# 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()
确定。它的作品看起来很糟糕。我怎么能正常做到这一点?
谢谢!
答案 0 :(得分: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
不起作用,如果我没记错的话。