私はdjangoサイトに複数のアプリケーションを持っています。以下のようなdjangoの異なるアプリケーションに異なるデータベースを使用することができます
mainsite
blog
tutorials
しかし、私はそのジャンゴ
私はdjangoサイトに複数のアプリケーションを持っています。以下のようなdjangoの異なるアプリケーションに異なるデータベースを使用することができます
mainsite
blog
tutorials
しかし、私はそのジャンゴ
でここで行うことができます私は、彼らが
を分離することができるように異なるデータベースに異なるモデルを保存するには、あなたが持っているだろうものです行こうとする。
1)使用するデータベースの設定を更新します。
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/var/db/projectdb'
}
'db_app1': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/var/db/app1db'
}
'db_app2': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/var/db/app2db'
}
2)各データベースについて、クエリ適切ルートするデータベース・ルータを実装します。あなたのケースでは、各アプリで実装する。これは多かれ少なかれdjangoのドキュメントから取られていることに注意してください。 http://stackoverflow.com/questions/:
app1.dbRouter.py
# DB router for app1
class App1DBRouter(object):
"""
A router to control app1 db operations
"""
def db_for_read(self, model, **hints):
"Point all operations on app1 models to 'db_app1'"
from django.conf import settings
if not settings.DATABASES.has_key('app1'):
return None
if model._meta.app_label == 'app1':
return 'db_app1'
return None
def db_for_write(self, model, **hints):
"Point all operations on app1 models to 'db_app1'"
from django.conf import settings
if not settings.DATABASES.has_key('app1'):
return None
if model._meta.app_label == 'app1':
return 'db_app1'
return None
def allow_relation(self, obj1, obj2, **hints):
"Allow any relation if a model in app1 is involved"
from django.conf import settings
if not settings.DATABASES.has_key('app1'):
return None
if obj1._meta.app_label == 'app1' or obj2._meta.app_label == 'app1':
return True
return None
def allow_syncdb(self, db, model):
"Make sure the app1 app only appears on the 'app1' db"
from django.conf import settings
if not settings.DATABASES.has_key('app1'):
return None
if db == 'db_app1':
return model._meta.app_label == 'app1'
elif model._meta.app_label == 'app1':
return False
return None
3)
settings.py
DATABASE_ROUTERS = ['app1.dbRouter.App1DBRouter', 'app2.dbRouter.App2DBRouter']
それはすべてですか?つまり、管理者からモデルを作成すると、自動的に2番目のデータベースに保存されます。または私は管理者のためにもっと多くのことをする必要がある – user825904
あなたはsyncdbをする必要がある、私はあなたがDBが既に存在する場合、リセットする必要があるかもしれないと思う。 – Rohan
DB名をいつ使うべきか、そしていつアプリケーションを使うべきかを区別するために、dbの名前を 'app1'からdb_app1に変更することを提案したいと思います。 –
たぶん関連settings.pyに
DATABASE_ROUTERS
を更新7970872/djangoでアプリケーションごとに異なるデータベースを使用する方法。 https://docs.djangoproject.com/en/dev/topics/db/multi-db/ –