2011-06-27 9 views
0

私たちはDjangoアプリケーションにインポートするCSVファイルを用意し、適切なモデルとリレーションシップを作成します。Django - データベースに書き込む前に一時/プレビューモデルを保存する場所?

最初のページには、ユーザーがファイルを選択するファイルアップロードフォームがあります。

私たちは、その後、ユーザーが進まないか(または可能性の任意の領域を修正するためにするかどうかを決定することができます

などのファイルを解析して、作成されるもの、それらを示す第2のページを返し、検証エラーオン画面)。

実際にデータベースにアクセスする前に一時的な仮モデルを保存するにはどうすればよいでしょうか?

CSVファイルはかなり大きく、おそらく約200KBのサイズで、数百のモデルを作成します。

これをどこかのデータベースに保存し、それらのモデルに「一時的」というラベルを付ける必要がありますか?確かに確認のために少し重いようですが、それがデータベースを適切に使用しているかどうかはわかりません。あるいは、Djangoのセッションでそれを保存できる方法はありますか?またはそれを行う他の方法?

前にdjango-usersでこれを言及しました。別のDBを使用するか、MongoDBに格納するかのどちらかを提案しました。私はDjangoモデルをそのようにMongoDBに永続させる最善の方法はよく分かりません。

また、ウェブサーバがタイムアウトした場合に、インポート処理を非同期的に処理するためにZeroMQやdjango-celeryのようなものを使う必要があるかもしれません。

とにかく、ここにも潜んでいる明るいDjangoの人々がたくさんいるので、私はSOコミュニティもキャンバスしたいと思っていました。

乾杯、 ビクター

+0

私には、django-usersユーザーのユーザーが好きです。 –

答えて

1

このCSVインポートプロセスが、私はモデルにロジックを組み込むことを好むだろう(すなわち、時間の短い期間のために制限され、多くのユーザーが使用していない)共通と永久になる場合:インスタンスをアクティブまたは保留中であることを示すフラグを持つようにモデルを修正します(削除済みも追加できます)。これは、複数のマネージャーで補完することができます。デフォルトのマネージャは、アクティブオブジェクトのみをフィルタするように変更できますが、第2のマネージャは保留中のオブジェクトのみをフェッチすることができます。長い間待っていたオブジェクトを世話するために仕事が書かれるかもしれません。

それ以外の場合(一時的な状況の場合)、保留中のオブジェクトを永続化するのに快適なメディアを選択することができます。

関連する問題