O Django suporta vários bancos de dados então tudo que você precisa é de algum código para lidar com a alternância entre eles.
Se você leu os documentos, verá que o Django permite que você forneça sua própria classe 'roteador' personalizada que decide qual banco de dados usar para qualquer consulta:
https://docs.djangoproject.com/en/1.6/topics/db/multi-db/# usando-roteadores
Como você diz que deseja selecionar qual banco de dados "no front-end", presumivelmente cada usuário do seu site pode escolher um back-end de banco de dados diferente. Isso apresenta um problema porque o roteador db não sabe nada sobre a solicitação http atual e o usuário.
Eu sugiro que você use este middleware 'ThreadLocal' para armazenar o objeto de solicitação atual para que você possa acessá-lo do seu roteador personalizado:
https://github.com/jedie/django-tools/blob/master/django_tools/middlewares/ThreadLocal.py
Digamos que você salve o back-end escolhido pelo usuário na sessão como
request.session['db_name']
- seu roteador ficaria assim: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