我有一个类似的问题: how to manually assign imagefield in Django
除了我的文件来自远程主机并且我只给了一个网址,所以类似:
class Book(models.Model):
name = models.CharField()
url = models.URLField()
file = models.FileField(null=True, blank=True, editable=False)
class BookForm(forms.ModelForm):
class Meta:
model = Book
def view(request):
if request.POST:
form = BookForm()
if form.is_valid():
request = form.instance.source_url
try:
f = urlopen(request)
# ...create open file obj...
form.instance.local_file.save(form.instance.ref, f.read(), True)
except Exception:
print 3
在这种情况下,如何将f
转换为打开的文件对象,以便保存其内容?
答案 0 :(得分:3)
使用requests
这是微不足道的。
import requests
from StringIO import StringIO
r = requests.get(file_url)
f = StringIO(r.content)
# f.read()
最后,正如所写的那样 - 当您重新分配request
时,您的代码会导致出现问题。您应该将此行request = form.instance.source_url
更改为file_url = from.instance.source_url
之类的其他内容。< / p>