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

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

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-如何创建文件并将其保存到模型的FileField中? 的全部内容, 来源链接: utcz.com/qa/430743.html

回到顶部