当前位置: 首页 > 面试题库 >

Django-如何创建文件并将其保存到模型的FileField中?

鲁宏爽
2023-03-14
问题内容

这是我的模特。我想要做的是生成一个新文件,并在保存模型实例时覆盖现有文件:

class Kitten(models.Model):
    claw_size = ...
    license_file = models.FileField(blank=True, upload_to='license')

    def save(self, *args, **kwargs):
        #Generate a new license file overwriting any previous version
        #and update file path
        self.license_file = ???
        super(Request,self).save(*args, **kwargs)

我看到很多有关如何上传文件的文档。但是,如何生成文件,将其分配给模型字段并将Django存储在正确的位置呢?


问题答案:

你想看看Django文档中的FileField和FieldFile,尤其是FieldFile.save()。

基本上,声明为的字段FileField在访问时为你提供class的实例FieldFile,该实例为你提供了几种与基础文件进行交互的方法。因此,你需要做的是:

self.license_file.save(new_name, new_contents)

new_name你要分配的文件名在哪里,并且new_contents是文件的内容。请注意,new_contents实例必须是django.core.files.File或的一个实例django.core.files.base.ContentFile(有关详细信息,请参见给定的手册链接)。这两个选择可以归结为:

# Using File
f = open('/path/to/file')
self.license_file.save(new_name, File(f))
# Using ContentFile
self.license_file.save(new_name, ContentFile('A string with the file content'))


 类似资料:
  • 我有一个巨大的字符串,我想保存为Django模型中的文件。为了做到这一点,我编写了以下代码: 这产生了一个错误, ’_ io。TextIOWrapper对象没有属性“_committed” 但是在网上搜索解决方案后,我陷入了死胡同。任何建议将不胜感激! 环境: 请求方法:获取请求 URL:http://127.0.0.1:8000/app/dbkarga/6/ Django版本:1.11.1 Py

  • 问题内容: 我正在尝试创建文件并将其保存到站点的根目录,但是我不知道它在哪里创建文件,因为看不到任何文件。而且,如果可能的话,我需要每次都覆盖该文件。 这是我的代码: 如何设置保存在根目录下? 问题答案: 它在与脚本相同的目录中创建文件。试试这个吧。

  • 问题内容: 我正在编写Django应用程序,它将获取特定URL的所有图像并将其保存在数据库中。 但是我没有在Django中使用ImageField。 Settings.py models.py download_img.py 我正在像这样的一个视图内调用download_imgs.py 问题答案: Django Documentation总是一个很好的起点 更新 因此,此脚本有效。 循环播放图片以

  • 问题内容: 在数据库中,我想添加另一个对象,它是上述对象的副本。 假设我的桌子有一排。我想用不同的主键将第一行对象插入另一行。我怎样才能做到这一点? 问题答案: 需更改对象的主键并运行save()。 如果要自动生成密钥,请将新密钥设置为“无”。

  • 问题内容: 我需要备份PST文件(存储空间)中包含的电子邮件。我正在使用libpst,这是我在网上找到的唯一免费库(http://code.google.com/p/java- libpst/ ) 这样我就可以访问每一封电子邮件中的所有信息(主题,正文,发件人等),但是我需要将它们放在文件中 在这里有人说您可以从“ javax.mail.Message”对象创建一个EML文件: 在Java中创建一

  • 问题内容: 我试图将磁盘中的文件分配给FileField,但是出现此错误: AttributeError:’str’对象没有属性’open’ 我的python代码: 和我的models.py 预先感谢您的帮助 问题答案: Django使用它自己的文件类型(具有明显增强的功能)。无论如何,Django的文件类型就像装饰器一样工作,因此你可以简单地将其包装在现有文件对象周围,以满足Django API