2017-07-06 3 views
0

Ich habe 2 Datenbanken in meinen Projekten mit mehreren Apps. Alle Apps mit Ausnahme einer verwenden die Standard-db, die andere hat eine separate db. Nach dem Ausführen von Makemigrationen und ./manage.py migrieren --database = seperate_db_name Ich habe immer noch nicht angewendet Migration für die Standarddatenbank ausstehend.Durchführen von Migrationen mit mehreren Datenbanken in Django

Die Frage ist, wie kann ich diese Migration nur für meine separate App sichtbar machen und nicht andere (die Standard-db verwenden). Dank

Hier ist mein Router

class S3DatabaseRouter(object): 
""" 
Determine how to route calls for s3web_upload_dev database 
""" 

def db_for_read(self, model, **hints): 
    """ 
    Attempts to read s3web_upload models to go to s3web_upload_dev 
    """ 
    if model._meta.app_label == 's3web_upload': 
     return 's3web_upload_dev' 
    return None 

def db_for_write(self, model, **hints): 
    """ 
    Attempts to write s3web_upload models to go to s3web_upload_dev 
    """ 
    if model._meta.app_label == 's3web_upload': 
     return 's3web_upload_dev' 
    return None 

def allow_migrate(self, db, app_label, model_name=None, **hints): 
    """ 
    Make sure the s3web_upload app only appears in the 's3web_upload_dev' database 
    """ 
    if app_label == 's3web_upload': 
     return db == 's3web_upload_dev' 
    return None 

Antwort

0

Für die Anwendung, die auch Standard db verwendet müssen im Router-Klasse weitergeleitet werden, versuchen Sie den folgenden Code es funktionieren sollte.

class S3DatabaseRouter(object): 
    """ 
Determine how to route calls for s3web_upload_dev database 
""" 
def db_for_read(self, model, **hints): 
    """ 
    Attempts to read s3web_upload models to go to s3web_upload_dev 
    """ 
    if model._meta.app_label == 's3web_upload': 
     return 's3web_upload_dev' 
    if app_label == 'default': # if you using custome applable use it instead of 'default' 
     return 'default' # it should be the db name from settings file 
    return None 

def db_for_write(self, model, **hints): 
    """ 
    Attempts to write s3web_upload models to go to s3web_upload_dev 
    """ 
    if model._meta.app_label == 's3web_upload': 
     return 's3web_upload_dev' 
    if app_label == 'default': 
     return 'default' 
    return None 

def allow_migrate(self, db, app_label, model_name=None, **hints): 
    """ 
    Make sure the s3web_upload app only appears in the 's3web_upload_dev' database 
    """ 
    if app_label == 's3web_upload': 
     return db == 's3web_upload_dev' 

    if app_label == 'default': 
     return db == 'default' 
    return None 
Verwandte Themen