5

私は django 1.2 を使用しており、プロジェクトに 2 つ目のデータベースをセットアップする必要がありました。プロジェクトで 2 番目の接続とルーターをセットアップするとすぐに、その 2 番目のデータベースを参照していないすべてのテスト ケースが失敗し始めます。アプリケーションの実行は正常に動作し、syncdb も正常に動作します。これは、私が問題を抱えているテスト (単体テスト) にすぎません。

2 番目のデータベースが作成されていないように見えます。(test_mydbname) として手動で作成しても失敗し続けます。

これはサポートされていますか?

4

1 に答える 1

1

DefaultRouter を追加する必要がありましたが、テストが再び機能し始めました。テスト シナリオでは、django は「デフォルト」データベースを認識していないようです。テスト データベースの作成順序を含むすべての情報: https://docs.djangoproject.com/en/dev/topics/testing/advanced/#tests-and-multiple-databases

これは私のデフォルトのルーターです(django 1.7、allow_relationとallow_migrateについてはよくわかりませんが、

class DefaultRouter(object):
    """
    A router for the default db. add last in settings
    """

    db_label = 'default'

    def db_for_read(self, model, **hints):
        return self.db_label

    def db_for_write(self, model, **hints):
        return self.db_label

    def allow_relation(self, obj1, obj2, **hints):
        return True

    def allow_migrate(self, db, app_label, model=None, **hints):
        return True

そしてsettings.pyで:

DATABASE_ROUTERS = ['otherapp.dbrouter.CustomDbRouter', 'project.dbrouter.DefaultRouter']
于 2015-05-22T09:11:31.983 に答える