Django एकाधिक डेटाबेस का समर्थन करता है इसलिए उनके बीच स्विच करने के लिए आपको बस कुछ कोड चाहिए।
यदि आपने दस्तावेज़ पढ़ लिए हैं तो आप देखेंगे कि Django आपको अपने स्वयं के कस्टम 'राउटर' वर्ग की आपूर्ति करने की अनुमति देता है जो यह तय करता है कि किसी भी क्वेरी के लिए किस डेटाबेस का उपयोग करना है:
https://docs.djangoproject.com/en/1.6/topics/db/multi-db/# राउटर का उपयोग करना
चूंकि आप कहते हैं कि आप "फ्रंट एंड पर" कौन सा डीबी चुनना चाहते हैं, तो संभवतः आपकी साइट का प्रत्येक उपयोगकर्ता एक अलग डेटाबेस बैकएंड चुन सकता है। यह एक समस्या प्रस्तुत करता है क्योंकि डीबी राउटर वर्तमान http अनुरोध और उपयोगकर्ता के बारे में कुछ नहीं जानता है।
मेरा सुझाव है कि आप वर्तमान अनुरोध वस्तु को संग्रहीत करने के लिए इस 'थ्रेडलोकल' मिडलवेयर का उपयोग करें ताकि आप इसे अपने कस्टम राउटर से एक्सेस कर सकें:
https://github.com/jedie/django-tools/blob/master/django_tools/middlewares/ThreadLocal.py
मान लें कि आप उपयोगकर्ता के चुने हुए बैकएंड को सत्र में सहेजते हैं request.session['db_name']
. के रूप में - आपका राउटर कुछ इस तरह दिखेगा:
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