我在磁盘上有一个现有文件(比如/folder/file.txt)和Django中的一个文件字段模型字段.
当我这么做的时候
instance.field = File(file('/folder/file.txt'))
instance.save()
它会将文件重新保存为file_1.txt
(下次为_2
,以此类推).
我理解为什么,但我不想要这种行为-我知道我希望字段关联的文件确实在那里等着我,我只想让Django指向它.
怎样
我在磁盘上有一个现有文件(比如/folder/file.txt)和Django中的一个文件字段模型字段.
当我这么做的时候
instance.field = File(file('/folder/file.txt'))
instance.save()
它会将文件重新保存为file_1.txt
(下次为_2
,以此类推).
我理解为什么,但我不想要这种行为-我知道我希望字段关联的文件确实在那里等着我,我只想让Django指向它.
怎样
如果想永久性地执行此操作,则需要创建自己的文件存储类
import os
from django.conf import settings
from django.core.files.storage import FileSystemStorage
class MyFileStorage(FileSystemStorage):
# This method is actually defined in Storage
def get_available_name(self, name):
if self.exists(name):
os.remove(os.path.join(settings.MEDIA_ROOT, name))
return name # simply returns the name passed
现在,在您的模型中,使用修改后的MyFileStore
from mystuff.customs import MyFileStorage
mfs = MyFileStorage()
class SomeModel(model.Model):
my_file = model.FileField(storage=mfs)