将文件保存为没有表单的FileField

时间:2017-01-04 19:34:10

标签: python django django-models

我需要保存FileField对象的文件,该对象从表单中获取其名称和内容(但是来自我的代码)。怎么样?

我需要类似的东西:

field = FileField()
...
save_under_name(field, name, content_bytes)

如何编写此函数save_under_name

此外,我需要获取已保存文件名的链接。

1 个答案:

答案 0 :(得分:2)

嗯,您很可能需要使用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)
     

from django.core.files.base import ContentFile
myfile = ContentFile("hello world")

然后做

obj.field.save('filename', myfile)

Django doc says it all