41

ディスクから FileField にファイルを割り当てようとしましたが、次のエラーが発生しました。

AttributeError: 'str' オブジェクトに属性 'open' がありません

私のpythonコード:

pdfImage = FileSaver()
pdfImage.myfile.save('new', open('mytest.pdf').read())

そして私のmodels.py

class FileSaver(models.Model):

    myfile = models.FileField(upload_to="files/")

    class Meta:
        managed=False

よろしくお願いいたします。

4

3 に答える 3

50

Django は独自のファイル タイプを使用します(機能が大幅に強化されています)。とにかく、Django のファイル タイプはデコレータのように機能するため、既存のファイル オブジェクトを単純にラップして、Django API のニーズを満たすことができます。

from django.core.files import File

local_file = open('mytest.pdf')
djangofile = File(local_file)
pdfImage.myfile.save('new', djangofile)
local_file.close()

もちろん、次のように記述してその場でファイルを装飾できます (1 行少なくします)。

pdfImage.myfile.save('new', File(local_file))
于 2010-08-17T12:27:27.863 に答える