2016-05-30 4 views
1

Ich habe meine Tabelle von app_a in andere app_b mit db_table verschoben. Ich habe zunächst Metainformationen wieDjango Tabelle in andere App mit db_table verschieben und nicht löschen Original-Tabelle

# app_b.models.ppy 
class Table(models.Model) 
# all fields 
class Meta: 
    db_table = 'app_a_table' 
    app_label = 'app_a' 

Wenn ich irgendwelche Änderungen in dieser Tabelle machen in app_b, Migrationen keine neuen Migrationsdatei unter Migration Ordner erzeugt. Es sagt.

No changes detected in app 'app_b' 

Ich habe versucht, von diesem ans und kommentiert app_label = 'app_a'. Jetzt erkennt es nach der Migration die Änderungen und erstellt die Migrationsdatei.

Dann führe ich python manage.py migrate Befehl aus, es wird ständig aufgefordert, Original-Tabelle zu löschen.

The following content types are stale and need to be deleted: 

    app_a | table 

Any objects related to these content types by a foreign key will also 
be deleted. Are you sure you want to delete these content types? 
If you're unsure, answer 'no'. 

    Type 'yes' to continue, or 'no' to cancel: no 

Wie unterdrücke ich diese Benachrichtigung? Wie kann ich der Django-Migration mitteilen, dass diese Tabelle in verschiedenen Apps vorhanden ist?

+0

Sie sollten eine mirgation erstellen, die eine neue Tabelle erstellt. kopiert die Daten und löscht die alten. Vergessen Sie nicht die Referenzen. –

+0

@KlausD. Wenn die Tabelle groß ist, würde das zu erheblichen Ausfallzeiten führen. – e4c5

Antwort

1

Nachdem ich meine Tabelle von app_a zu anderen app_b mit db_table und app_label bewegt. Migrationen funktionieren, wenn ich sie nur für app_a ausführen.

python manage.py makemigrations app_a 

Dieser Befehl run Migration für app_b