ユーザーの履歴書を受け入れる FileField がある django フォームがあります。後で履歴書を html ドキュメントに変換します。そのため、元のドキュメントをすぐにピクルして db 列に保存し、後でピクルを解除して変換することを考えました。それは可能ですか?
2 に答える
FileField インスタンスを酸洗いする必要はないと思います。すべての FileField ストアは、ファイルが保存されたドライブ上のパスです...その意味で、ファイルは後で使用するために既に保存されており、フィールド インスタンスをピクルしてもあまり得られません。実際、フィールドは実際にはデータを保存しないため、ピクルしても実際には何もしません:-) FileField のdjangoドキュメントを参照してください。
FileField を含むモデルが保存されると、履歴書へのファイル パスが保存されます。後で発生するプロセスは、ドライブから履歴書をロードし、HTML に変換してから、元の履歴書を削除するか、その他の「クリーンアップ」処理を実行できます。
実際のファイルの内容をデータベースに保存する必要がある場合は、代わりにモデルの Blob フィールドを作成することを検討します... blob は DB 固有です。SOに関するこの質問には、最低限の実装があります。ただし、DB にバイナリを格納することはパフォーマンスの悪いアイデアだと多くの人が感じていることに注意してください。この google django-developers フォーラムの投稿には、Django と blob に関する良い議論とサンプル コードがあります。
ファイルを保存してから、変換したいときにもう一度開く方がはるかに良い考えです。それをピクルしてデータベースに保存すると、パフォーマンスが大幅に低下します。特にファイルが大きい場合。