我在磁盘上有一个现有的文件(比如/folder/file.txt),在Django中有一个FileField模型字段。
当我这样做的时候
instance.field = File(file('/folder/file.txt'))
instance.save()
它会将文件重新保存为file_1.txt
(下一次为_2
,依此类推)。
我理解为什么,但我不想要这种行为-我知道我想要与字段关联的文件确实在那里等着我,我只想让Django指向它。
多么?
发布于 2011-12-01 14:14:49
如果您想永久执行此操作,则需要创建您自己的FileStorage类
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
现在,在您的模型中,使用修改后的MyFileStorage
from mystuff.customs import MyFileStorage
mfs = MyFileStorage()
class SomeModel(model.Model):
my_file = model.FileField(storage=mfs)
发布于 2012-06-06 06:43:07
只需将instance.field.name
设置为文件的路径
例如:
class Document(models.Model):
file = FileField(upload_to=get_document_path)
description = CharField(max_length=100)
doc = Document()
doc.file.name = 'path/to/file' # must be relative to MEDIA_ROOT
doc.file
<FieldFile: path/to/file>
发布于 2013-08-23 23:08:05
试试这个(doc):
instance.field.name = <PATH RELATIVE TO MEDIA_ROOT>
instance.save()
https://stackoverflow.com/questions/8332443
复制相似问题