Kolayca özel modele bağlıyor görünerek bunu yapabilirsiniz:
class A(models.Model):
_DATABASE = "X"
class B(models.Model):
_DATABASE = "Y"
...
Sonra yönlendirici eklemeniz gerekir.
class CustomRouter(object):
def db_for_read(self, model, **hints):
return getattr(model, "_DATABASE", "default")
def db_for_write(self, model, **hints):
return getattr(model, "_DATABASE", "default")
def allow_relation(self, obj1, obj2, **hints):
"""
Relations between objects are allowed if both objects are
in the master/slave pool.
"""
db_list = ('default')
return obj1._state.db in db_list and obj2._state.db in db_list
def allow_migrate(self, db, model):
"""
All non-auth models end up in this pool.
"""
return True
Ve son adım settings.py içinde yönlendirici specifing edilir: Sonraki bir _DATABASE alana göre veritabanını seçecek ve _DATABASE özniteliği olmadan modeller default
veritabanını kullanacak, ayrıca ilişkiler sadece default
veritabanı için izin verilecek
Eğer ilişkisel modeller "_DATABASE", niteliği olmayacak çünkü bu durumda, varsayılan olmayan veritabanında birçok çoğa ilişkileri ile çalışmak için gidiyoruz eğer
DATABASE_ROUTERS = ['path.to.class.CustomRouter']
BTW bu çözüm işe yaramaz, daha iyi bir şey kullanmak db_for_read/db_for_write filtre koşulu olarak model._meta.app_label
gibi ing
olası yinelenen [Django? - Bir model için bir veritabanı nasıl belirleneceğini] (http://stackoverflow.com/questions/3519143/django-how-to-specify- a-database-for-a-model) –