Django ondersteunt meerdere databases dus alles wat je nodig hebt is wat code om tussen de twee te kunnen schakelen.
Als je de documenten hebt gelezen, zul je zien dat Django je toestaat om je eigen aangepaste 'router'-klasse te leveren die beslist welke database moet worden gebruikt voor een bepaalde vraag:
https://docs.djangoproject.com/en/1.6/topics/db/multi-db/# gebruik-routers
Aangezien u zegt dat u wilt selecteren welke db "aan de voorkant" is, zou elke gebruiker van uw site waarschijnlijk een andere database-backend kunnen kiezen. Dit levert een probleem op omdat de db-router niets weet over het huidige http-verzoek en de huidige gebruiker.
Ik raad u aan deze 'ThreadLocal'-middleware te gebruiken om het huidige verzoekobject op te slaan, zodat u het kunt openen vanaf uw aangepaste router:
https://github.com/jedie/django-tools/blob/master/django_tools/middlewares/ThreadLocal.py
Stel dat u de door de gebruiker gekozen backend in de sessie opslaat als request.session['db_name']
- uw router ziet er ongeveer zo uit:
from django_tools.middlewares import ThreadLocal
class RequestRouter(object):
def db_for_read(self, model, **hints):
request = ThreadLocal.get_current_request()
return request.session.get('db_name', 'default')
def db_for_write(self, model, **hints):
request = ThreadLocal.get_current_request()
return request.session.get('db_name', 'default')
def allow_relation(self, obj1, obj2, **hints):
return True
def allow_syncdb(self, db, model):
return True