我正在尝试使用硬链接复制文件,其中文件存储为 Django FileField。我想使用硬链接来节省空间和复制时间(预计不会对原始文件或副本进行任何更改)。但是,当我尝试从下面的代码段中调用 new_file.save() 时,我遇到了一些奇怪的错误。
AttributeError: 'file' object has no attribute '_committed'
我的想法是,在进行硬链接之后,我可以打开链接文件并将其存储到 Django 新文件实例的 FileFile 中。我在这里错过了一步还是什么?
模型.py
class File(models.Model):
stored_file = models.FileField()
别处.py
import os
original_file = File.objects.get(id=1)
original_file_path = original_file.file.path
new_file = File()
new_file_path = '/path/to/new/file'
os.makedirs(os.path.realpath(os.path.dirname(new_file_path)))
os.link(original_file_path, new_file_path)
new_file.stored_file = file(new_file_path)
new_file.save()