multiple databases and multiple models in django

后端 未结 2 611
终归单人心
终归单人心 2020-11-27 13:57

I have two databases and two models:the Admin and the user.

I want to sync my models to the two databases; admin model to database A and user model to database B;

2条回答
  •  孤街浪徒
    2020-11-27 14:49

    I fully agree with @alecxe on using the database router. I am currently using a single admin interface to manage multiple databases. Note that authentication for all databases are stored in the default database, so when you do the syncdb (with no arguments).

    Generic Database Router

    I found this implementation to be extremely flexible and useful.

    Settings.py

    # Define the database manager to setup the various projects
    DATABASE_ROUTERS = ['manager.router.DatabaseAppsRouter']
    DATABASE_APPS_MAPPING = {'mux_data': 't29_db', 
                             'T50_VATC':'t50_db'}
    
    DATABASES = {
        'default': {
                'ENGINE': 'django.db.backends.postgresql_psycopg2', 
                'NAME': 'fail_over',                    
                'USER': 'SomeUser',                      
                'PASSWORD': 'SomePassword',                  
                'HOST': '127.0.0.1',                     
                'PORT': '',                      
        },
    
        't29_db': {
                'ENGINE': 'django.db.backends.postgresql_psycopg2', 
                'NAME': 'mux_stage',                    
                'USER': 'SomeUser',                      
                'PASSWORD': 'SomePassword',                  
                'HOST': '127.0.0.1',                      
                'PORT': '',                      
        },
    
        't50_db': {
                'ENGINE': 'django.db.backends.postgresql_psycopg2', 
                'NAME': 't50_vatc',                    
                'USER': 'SomeUser',                      
                'PASSWORD': 'SomePassword',                 
                'HOST': '127.0.0.1',                     
                'PORT': '',                      
        },
    }
    

    Sample Models

    # Create your models here.
    class Card_Test(models.Model):
        name = models.TextField(max_length=100)
        description = models.TextField(max_length=200)
        units = models.TextField(max_length=500)
        result_tags = models.TextField(max_length=500)
    
        class Meta:
            app_label = 'mux_data'
    
        def __unicode__(self):
            return self.name
    
    class Status_Type(models.Model):
        status = models.CharField(max_length=25)
    
        class Meta:
            app_label = 'mux_data'
    
        def __unicode__(self):
            return self.status
    

提交回复
热议问题