2016-10-13 6 views
0

私はDjangoアプリケーションのデフォルトデータベースではないデータベースYに属するクラスAとクラスBを持っているとします。Djangoでデフォルト以外のデータベースにテーブルを作成するにはどうしたらいいですか?

class A(models.Model): 
    attA = models.CharField(max_length = 1024) 

class B(models.Model): 
    forA = models.ForgeinKey(A) 
    attB = models.CharField(max_length = 8) 

class BForm(forms.ModelForm): 
    class Meta: 
     model = B 

この場合、テーブルAとテーブルBはどちらもデフォルト以外のデータベースにあります。このデータベースを使用して、デフォルトのテーブルではなく、これらのテーブルを検索する方法を指定します。私の見解では、私は

form = BForm() 

を持っているしかし、私はプログラミングエラーを言ってエラーが出る:それは私のデフォルトのデシベルではなく、テーブルが実際に存在しているALT 1で見ているので、関係は、存在しません。これをどうやって解決するのですか?

答えて

0

Djangoにどのモデルのデータベースを保存するかを指定するには、データベースルーターを定義する必要があります。 [docs]

例は次のようになります。

DATABASE_ROUTERS = ['path.to.YourRouter'] 

router.py

class YourRouter(object): 
    def db_for_read(self, model, **hints): 
     if model.__class__.__name__ in ['A', 'B']: 
      return 'secondDB' 
     return 'default' 

    def db_for_write(self, model, **hints): 
     return 'default' 

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

Settings.py

関連する問題