Django database router

前端 未结 2 1531
北荒
北荒 2020-12-21 21:01

I\'d like to route (change) the database based on the authenticated user. I\'ve looked at the docs but I don\'t know how to do this upon user login...

I was thinking

2条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-21 21:39

    Refer to this post on how to play around with the routers

    DATABASE_ROUTERS = ['CustomDatabaseRouter',] #a setting that Django understands.
    
    class CustomDatabaseRouter(object):
    
      def db_for_read(self, model, **hints):
         site_name = get_current_site()
         if site_name  in ['site1']:
             return 'db1'
         if site_name in ['site2']:
            return 'db2'
         return 'default'
    
      def db_for_write(self, model, **hints):
         site_name = get_current_site()
         if site_name  in ['site1']:
             return 'db1'
         if site_name in ['site2']:
            return 'db2'
         return 'default'
    
      def allow_syncdb(self, model, **hints):
         site_name = get_current_site()
         if site_name in ['site1'] and db == 'db1':
             return True
         if site_name in ['site2'] and db == 'db2':
            return True
         return False
    

提交回复
热议问题