将二进制数据从url保存到Django FileField中

时间:2015-07-16 03:31:35

标签: python django python-2.7 django-1.7

有没有办法将二进制数据从外部URL(在我的情况下,excel文件)中保存到Django FileField中,并根据django项目设置将文件上传到目的地?

class FileData(models.Model):
    excel_file = models.FileField(upload_to='excel_file_path')


import requests
url = 'https://www.example.getfile.com/file_id=234'
r = requests.get(url)
# How to store the binary data response to FileField?

感谢您的帮助。如果我的情况需要进一步的信息,请告诉我。

1 个答案:

答案 0 :(得分:2)

您可以使用django.core.files.uploadedfile.SimpleUploadedFile将内容另存为模型实例的文件字段。

>>> import requests
>>> from django.core.files.uploadedfile import SimpleUploadedFile

>>> response = requests.get("https://www.example.getfile.com/file_id=234")

>>> excel_file = SimpleUploadedFile("excel.xls", response.content, content_type="application/vnd.ms-excel")
>>> file_data = FileData(excel_file=excel_file)
>>> file_data.save()