2016-06-15 17 views
1

私はいくつかのプロジェクト間で共通のデータを持つファイルを持っています。データはDjangoデータベースにロードする必要があります。ファイルはそれほど変わらないので、サーバの起動時に一度読み込むだけで十分です。ファイルは複数のプロジェクトで共有されているため、フォーマットを完全に制御することはできないため、これをフィクスチャーなどに変換することはできません。起動時にデータを読み込む

ready()でロードしようとしましたが、移行が完了する前にready()が呼び出されているため、新しいデータベースを作成したり既存のデータベースを移行するときに問題が発生します。基になるテーブルはありません。私はclass_preparedシグナルハンドラでそれを設定しようとしましたが、ロードプロセスでは複数のモデルが使用されていますので、必要なモデルクラスがすべて準備されているかどうかは確かではありません。また、テストを実行するときにready()が呼び出されないように見えるので、データが欠落しているためユニットテストが失敗します。このようなことをする正しい場所は何ですか?

答えて

1

私が探しているものは存在しないようです。 Djangoは、ユーザーが移行などを処理することを信頼し、ロード時にデータベースをチェックしません。したがって、システムの開始時にデータをロードして実際にロードできる場所がシステム内に存在しません。私がやったことはready()でデータをロードすることですが、まずtry:except:ブロックでMyModel.objects.exist()を実行し、例外があった場合に返すことで健全性チェックを行います。これは理想的ではありませんが、他の方法は見つかりませんでした。

関連する問題