Sto costruendo un sito Web in Django Framework, questo sito web deve avere diversi schemi SQL, per ora sono riuscito a creare tutti gli schemi e tutte le cose, ma non capisco perché la tabella django_migrations è in ogni schema dopo la migrazione dei database.Perché la tabella django_migrations in tutti i database
Basi di dati attesi Contenuto:
tavoli AppDB sono tutti i modelli definiti da questa applicazione
predefinite tabelle DB sono tutte le tabelle Django (admin, ContentTypes, AUTH, sessioni)
Database Contenuto:
tavoli AppDB sono tutti i modelli definiti da questa applicazione + django_migrations
tabelle predefinite sono tutte le tabelle Django (admin, ContentTypes, auth, sessioni) + django_migrations
Quelli sono i router di il 2 dbs:
class DefaultRouter(object):
APPS = ['auth', 'sessions', 'admin', 'contenttypes']
DB = 'default'
def db_for_read(self, model, **hints):
if model._meta.app_label in self.APPS:
return self.DB
return None
def db_for_write(self, model, **hints):
if model._meta.app_label in self.APPS:
return self.DB
return None
def allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label in self.APPS or obj2._meta.app_label in self.APPS:
return True
return None
def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label in self.APPS:
return db == self.DB
return None
class MyAppDBRouter(object):
def db_for_read(self, model, **hints):
return self.check_app_label(model)
def db_for_write(self, model, **hints):
return self.check_app_label(model)
def allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label == 'myapp' or obj2._meta.app_label == 'myapp':
return True
return None
def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label == 'myapp':
return db == 'appdb'
return None
@staticmethod
def check_app_label(model):
if model._meta.app_label == 'myapp':
return 'appdb'
return None
Grazie.
Penso che tu non abbia capito cosa ho chiesto, la mia domanda è questa, Ho 2 db, uno dovrebbe includere le informazioni di django e l'altro dovrebbe includere solo i dati per le mie app. quando eseguo la migrazione del progetto crea la tabella django_migrations in entrambi db con gli stessi dati, ho provato quasi tutto per evitare questo, ma nulla mi ha aiutato –
@NadirAlbajari: Non è possibile. Gli altri tavoli che hai menzionato sono solo app opzionali e possono essere messi ovunque. La tabella delle migrazioni non è facoltativa, deve esistere su ciascun database in modo che possa tenere traccia delle migrazioni applicate a quel database. –
Grazie a @Kevin, lo capisco, ma supponendo che io abbia 2 app (app1, app2) e 2 database (db1, db2), mi piacerebbe avere le relative migrazioni per app1 in db1 e lo stesso per app2 in db2. ma la tabella delle migrazioni in db1 contiene le migrazioni per le 2 app e le stesse per db2. c'è una buona ragione per cui questo accada? C'è un modo per avere le migrazioni per 2 app separate? Grazie ancora !! –