Django mendukung beberapa database jadi yang Anda butuhkan hanyalah beberapa kode untuk menangani peralihan di antara mereka.
Jika Anda telah membaca dokumen Anda akan melihat bahwa Django mengizinkan Anda untuk menyediakan kelas 'router' kustom Anda sendiri yang memutuskan basis data mana yang akan digunakan untuk setiap kueri yang diberikan:
https://docs.djangoproject.com/en/1.6/topics/db/multi-db/# menggunakan-router
Karena Anda mengatakan ingin memilih db "di ujung depan" mana, maka mungkin setiap pengguna situs Anda dapat memilih backend basis data yang berbeda. Ini menimbulkan masalah karena router db tidak tahu apa-apa tentang permintaan http dan pengguna saat ini.
Saya sarankan Anda menggunakan middleware 'ThreadLocal' ini untuk menyimpan objek permintaan saat ini sehingga Anda dapat mengaksesnya dari router khusus Anda:
https://github.com/jedie/django-tools/blob/master/django_tools/middlewares/ThreadLocal.py
Katakanlah Anda menyimpan backend pilihan pengguna di sesi sebagai request.session['db_name']
- router Anda akan terlihat seperti ini:
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