2009-06-01 9 views
2

私はユーザーの履歴書を受け入れるFileFieldを持っているdjangoフォームを持っています。私は、履歴書をHTML文書に変換するつもりです。だから私は元の文書をすぐに酸洗し、その中にdb columを格納し、後でそれをunpickleして変換することを考えました。それは可能ですか?djangoフォームからファイルをピックアップすることはできますか?私はInMemoryUploadedFileを意味します

+0

なぜ、最初にそれを漬けたいのですか? –

+0

ファイルシステムに直接格納することはできません。変換が成功すると、私は両方のファイルを保存します。オリジナルと変換されたもの。それで、なぜ私は正確なファイルを格納する中間の場所が必要です。だから私はそれを酸洗することを考えました。 –

答えて

3

変換するときにファイルを保存してからもう一度開くことをお勧めします。それをピックリングしてデータベースに格納することは、あなたのパフォーマンスにかなり大きな打撃を与えます。特にファイルが大きい場合。

+0

私は同じ結論にゆっくりと到着していると思います –

3

私はあなたがFileFieldインスタンスを酸洗することに頼る必要はないと思います。すべてのFileFieldストアは、ファイルが保存されているドライブ上のパスです。その意味で、ファイルは後で消費するために保存されています。実際には、フィールドは実際にデータを格納していないため、実際には何もしません:-) django docs on FileFieldを参照してください。

FileFieldを持つモデルを保存すると、ファイルパスがレジュームに保存されます。後で続くすべてのプロセスは、ドライブからレジュームを読み込み、HTMLに変換して元のレジュームを削除するか、好きな処理を行うことができます。

実際のファイルの内容をデータベースに格納する必要がある場合は、代わりにモデルのBlobフィールドを作成することになります。blobはDB固有です。このquestion on SOにはベアボーンの実装があります。しかし、多くの人がDB内にバイナリを格納することはパフォーマンスの低いアイデアだと感じていることに注意してください。実際には、アプリをそのように構造化することに注意する必要があります。このgoogle django-developers forum postには、DjangoとBLOBに関する議論とサンプルコードがあります。

+0

私はあなたの点を見て:FileFieldはローカルファイルのパスを保存するだけです。しかし、あなたの2番目の段落で、あなたは "...それはファイルパスを履歴書に保存する"と言った。それはどういう意味ですか? ブロブに関しては、もちろん私はそうしたくはありません。私はちょうどすべての履歴書のHTMLコンテンツをデータベースに保存したいだけです。 –

関連する問題