2015-03-06 14 views
5

Ho una domanda sulla funzione di migrazione di Django quando c'è una tabella esistente.Ignorare la tabella esistente quando migrazione ./manage.py

ContentData 
ContentType 
Faq 
UserLog 
TB_TEAM_INF 

Quando provo a fare "./manage.py migrare" in modo che possa creare le 5 tavoli sopra da models.py, ho ricevuto un messaggio di errore perché non v'è una tabella esistente, TB_TEAM_INF.

Poiché TB_TEAM_INF è una tabella utilizzata da un'altra squadra, non riesco a rimuovere la tabella. Non posso usare un database separato a causa di vincoli del progetto. In questo caso apro il file di migrazione come 0001_initial.py e rimuovo manualmente l'oggetto modello, TB_TEAM_INF temporaneamente durante la migrazione.

C'è un modo migliore per ignorare le tabelle esistenti quando "./manage.py migrano" invece di modificare manualmente il file di migrazione?

Ho provato --exclude = TB_TEAM_INF o --ignore = TB_TEAM_INF con migrazione ./manage.py ma sembra che quelle opzioni non siano accettate. Sto usando Django 1.7.2.

risposta

9

aggiungere l'opzione managed alla definizione del modello:

class TB_TEAM_INF(models.Model): 
    ... 
    class Meta: 
     managed = False 

Estratto dalla documentazione:

Se False, nessuna operazione di creazione tabella di database o cancellazione verranno eseguite per questo modello.

+0

Questo è fantastico! Grazie mille per il vostro consiglio gentile, catavaran. – ronnefeldt

+0

Sì, funziona. Per aggiornare il campo devo aggiungere 'makemigrations; migrare --run-syncdb'. – FaithReaper

Problemi correlati