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 Filef = 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