Django FileField手动复制

时间:2016-12-06 23:05:28

标签: django

class ModelFile(models.Model):
    ufile = models.FileField(upload_to="files")

我在内部有一些管理命令:

...
my_file = ModelFile.objects.create(ufile='/home/myfile.txt')

我有对象实例,但我没有在项目的files目录中看到myfile.txt?我做错了什么?

3 个答案:

答案 0 :(得分:0)

原因是仅使用文件路径创建新的模板文件并不实际复制文件 - 它只链接到已存在的文件。要实际复制文件,您可以使用ContenFile,如SO答案:Duplicate Model Instance

答案 1 :(得分:0)

  

我有[模型]实例,但是我没有在项目的files目录中看到myfile.txt?

那是对的。 Model.create创建模型的实例,并指定您指定的所有字段值。

您的代码中没有任何内容可以在文件系统上创建相应的文件。

答案 2 :(得分:0)

from django.core.files import File

instance = ModelFile.objects.create()
with open('/home/filename.txt', 'w') as file:
    instance.ufile.save('filename.txt', File(file))