2

「ログアウト」部分用とログイン用の 2 つのデータベースが必要なプロジェクトに取り組んでいます。両方のデータベースに同期された認証 (したがって contenttypes) アプリが必要です。これは正常に動作しています。ただし、デフォルトの Permission および ContentType オブジェクトを作成する auth および contenttypes の管理コマンドは、ログインしているデータベースでは実行されず、デフォルトのデータベースでのみ実行されます。私はこれの権利を持っていますか?

私のデータベースルーター

LOGGED_IN_APPS = ('avatar', 'guardian', 'money', 'ipn', 'schedule', 'studio')
COMMON_APPS = ('auth', 'contenttypes', 'registration')

class MyRouter(object):
    def db_for_read(self, model, **hints):
        if model._meta.app_label in LOGGED_IN_APPS:
            return 'logged_in'
        return None

    def db_for_read(self, model, **hints):
        if model._meta.app_label in LOGGED_IN_APPS:
            return 'logged_in'
        return None

    def allow_relation(self, obj1, obj2, **hints):
        if obj1._meta.app_label in LOGGED_IN_APPS or obj2._meta.app_label in LOGGED_IN_APPS:
            return True
        return None

    def allow_syncdb(self, db, model):
        if db == 'logged_in':
            return model._meta.app_label in LOGGED_IN_APPS or model._meta.app_label in COMMON_APPS
        elif model._meta.app_label in LOGGED_IN_APPS:
            return False
        return None
4

1 に答える 1

1

これが私がしたことです。まず、特定のデータベースにパーミッションを作成するように syncdb に指示する方法はありません。常にデフォルトが選択されます。したがって、このプロジェクトの性質上、それぞれ独自のデータベースを持つ 2 つのプロジェクトに分割することができました。これで問題は解決しますが、残念ながら、複数のデータベースでこれを行うには、Django にパッチを適用する必要があります。

于 2010-08-20T20:34:18.683 に答える