3

db_for_readとルーターの方法を使用して、さまざまなアプリとさまざまなモデルをさまざまなデータベースに転送するようにデータベースルーターを設定しましたdb_for_write

./manage.py syncdbそれはそれらのルーター設定を尊重しないことを除いて、それは非常にうまく機能します。

モデルをsyncdb作成すると、すべてデフォルトのデータベースに作成されます。

データベースルーターはメソッドのみを提供し、allow_syncdbメソッドは提供しませんsync_tosyncdb新しいテーブルを作成する場所をコマンドに指示する方法はありますか?

注:--database一部のモデルアプリが他のアプリとは異なるデータベースに移動することがあるため、この機能を使用できません。

4

1 に答える 1

10

ルーターを作成するときは、allow_syncdb()メソッドを作成したことを確認してください。データベースとモデルの両方が必要です。実行manage.py syncdbすると、基本的にを設定し--database=defaultます。モデルをデフォルトのデータベースに同期させたくない場合は、allow_syncdb()メソッドが条件に対してFalseを返す必要がありますdb==default and model._meta.app_label==myapp

そのdb--database=your_other_dbに入るオプションを指定してsyncdbを実行する必要があります。myappただし、その場合は、allow_syncdb()が。の場合にのみTrueを返すようにしてdb==your_other_db and model._meta.app_label==myappください。

それは理にかなっていますか?manage.py syncdb基本的に、データベースごとに1回ずつ、メソッドを2回実行する必要があります。一度だけ実行して、両方のデータベースを更新させることはできません。

于 2011-09-27T20:58:47.083 に答える