Django understøtter flere databaser så alt hvad du behøver er noget kode til at håndtere skift mellem dem.
Hvis du har læst dokumenterne, vil du se, at Django giver dig mulighed for at levere din egen tilpassede 'router'-klasse, som bestemmer, hvilken database der skal bruges til en given forespørgsel:
https://docs.djangoproject.com/en/1.6/topics/db/multi-db/# ved hjælp af routere
Da du siger, du vil vælge hvilken db "på frontend", så kunne hver bruger af dit websted formodentlig vælge en anden database-backend. Dette giver et problem, fordi db-routeren ikke ved noget om den aktuelle http-anmodning og bruger.
Jeg foreslår, at du bruger denne 'ThreadLocal' middleware til at gemme det aktuelle anmodningsobjekt, så du kan få adgang til det fra din brugerdefinerede router:
https://github.com/jedie/django-tools/blob/master/django_tools/middlewares/ThreadLocal.py
Lad os sige, at du gemmer brugerens valgte backend i sessionen som request.session['db_name']
- din router ville se sådan ud:
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