エクセルファイルと画像付きのフォルダからいくつかのデータをインポートする必要があります。エクセルのすべての行はすべてのエントリを記述し、フォルダ内のファイル名のリストを持っています)。djangoシェルからファイルをアップロードする
データベースのすべてのエントリを作成し、それをdjangoシェルで保存するスクリプトを実行しましたが、InMemoryUploadedFileをインスタンス化してモデルで保存する方法がわかりません。
django 1.0では、私は必要なことをすることを可能にするこの小さなクラスを持っていましたが、django 1.1の変更でこれ以上動作しません。
class ImportFile(file):
def __init__(self, *args, **kwargs):
super(ImportFile, self).__init__(*args, **kwargs)
self._file = self
self.size = os.path.getsize(self.name)
def __len__(self):
return self.size
def chunks(self, chunk_size=None):
self._file.seek(0)
yield self.read()
私は、画像をロードしてモデルインスタンスで保存するために、このコードでこのクラスを使用していました。
for photo in photos:
f = ImportFile(os.path.join(IMPORT_DIR, 'fotos', photo), 'r')
p = Photo(name=f.name, image=f, parent=supply.supply_ptr)
name = str(uuid1()) + os.path.splitext(f.name)[1]
p.image.save(name, f)
p.save()
質問は、私はPythonでファイル?または、この文脈で仕事ができる他の事からInMemoryUploadedFileまたはTemporaryUploadedFileを作成するのですか、です。
をですから、Fileオブジェクトを作成するにImportFileオブジェクトを作るから変わったのか? ImportFileはFileではなくFileから派生しましたか? ImportFileをFileから派生させることでこれを修正できたようですが、ImportFileが何を式に追加しているのか分かりません。提示されたコードから、多くの特殊な振る舞いをしているようには見えなかった。 – hughdbrown
まず、ファイルオブジェクトを操作しようとしたときに、djangoは "fが属性チャンクを持たない"ようないくつかの例外を発生させたので、このクラスを作成して作業に必要なすべての属性を書き出しました。 – hchinchilla