为没有表单的 FileField 保存文件

por*_*ton 2 python django django-models

我需要为一个FileField对象保存文件,该对象不是从表单(而是从我的代码)获取其名称和内容。如何?

我需要类似的东西:

field = FileField()
...
save_under_name(field, name, content_bytes)
Run Code Online (Sandbox Code Playgroud)

这个函数怎么写save_under_name

我还需要获取保存文件名的链接。

Sha*_*ang 5

好吧,您很可能需要使用FieldFile对象,它定义了FileField保存文件的内容。要制作FieldFile,您可以使用文件系统中的文件描述符或表示文件内容的字符串。Django doc 对field.save()方法有很好的解释,引用:

from django.core.files import File
# Open an existing file using Python's built-in open()
f = open('/path/to/hello.world')
myfile = File(f)
Run Code Online (Sandbox Code Playgroud)

或者

from django.core.files.base import ContentFile
myfile = ContentFile("hello world")
Run Code Online (Sandbox Code Playgroud)

然后做

obj.field.save('filename', myfile)
Run Code Online (Sandbox Code Playgroud)

Django 文档说明了一切