1

私はこれに似た質問があります: Djangoで手動でimagefieldを割り当てる方法

私のファイルがリモートホストからのものであり、URLのみが与えられていることを除いて、次のようになります。

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開いているファイルオブジェクトに変換する必要がありますか?

4

1 に答える 1

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

于 2012-06-16T15:10:44.637 に答える