我在磁盘上有一个现有文件(比如/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)

Django相关问答推荐

django命令中的no_color不起作用

我找不到为什么我的DRF登录测试没有按预期工作

Django/SendGrid-密码重置-发件人地址与验证的发件人身份不匹配.";

我无法在Django模板中使用Get_Foo_Display

如何在Django中显示文件大小

情节主题更改问题

如何在 Django REST Framework API 响应中使用多标签过滤器?

防止 Django 从表单集中保存特定表单

Django 表单字段必填和可选配置

将 **kwargs 传递给 Django 表单

删除所有表的django命令是什么?

重命名 django 元素的简单方法

Django ALLOWED_HOSTS IP 范围

在 docker 容器中创建 django 超级用户而不输入密码

使用直通模型了解 Django 中的多对多字段

在 Django 中测试different layers的最佳实践是什么?

PyCharm 代码判断提示找不到模板文件,如何解决?

如何在 Django 中创建一个非空的 CharField?

Django 测试 - 在所有测试中修补对象

如何检测 Heroku 的环境?