2015-05-29 12 views
8

Usuwam niepotrzebną tabelę i model z naszej witryny Django. Usunąłem wszystkie referencje klucza odwołania przed wywołaniem migracji.DeleteModel (...), ale po uruchomieniu migracji nadal pojawia się następujący monit:Usuwanie nieużywanych modeli, monit o nieaktualne typy zawartości

Następujące typy zawartości są nieaktualne i muszą być usunięte:

myapp | MyDeletedModel 

Wszelkie przedmioty związane z tych typów zawartości za pomocą klucza obcego będzie również zostać usunięte. Czy na pewno chcesz usunąć te typy zawartości? Jeśli nie masz pewności, odpowiedz "nie".

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

Jestem zdezorientowany, dlaczego otrzymuję ten wiersz jest jakiś sposób mogę zatrzymać ten wiersz z pokazując, kiedy idziemy na żywo? używamy środowiska CI gdzie nie mamy użytkownikom dostępny, aby odpowiedzieć „tak” lub „nie”

Dzięki

Odpowiedz

11

Ramy contenttypes zawiera odniesienia do modelowania tabel. W takim przypadku masz nieaktualne odniesienie do właśnie usuniętej tabeli. Jest całkowicie bezpieczny, aby odpowiedzieć na yes i usunąć nieczytelny typ zawartości. Inaczej by się stało, gdybyś zmienił nazwę tabeli, która wskazywałaby na nią GenericForeignKey, w którym to przypadku inne obiekty miałyby ForeignKey do tego ContentType, a usuwanie kumulowałoby się wzdłuż tych relacji.

W środowisku na żywo można przekazać opcję --noinput, aby anulować ten monit. Jednak domyślnie będzie to no. Zwykle nie jest problemem, aby mieć jakieś nieaktualne treści.

+0

Dzięki @knbk, sprawdzę z naszym gościem, aby zobaczyć, jak przeprowadzamy migracje dla --noinput, jeśli odpowiemy na to pytanie raz, czy zapamiętamy odpowiedź, czy też zostaniemy poproszeni o każdą migrację? –

+0

Za każdym razem, gdy przeprowadzisz migrację, która zmieni nazwę lub usunie model, pojawi się monit. – knbk

+0

ok, patrzę na tabelę django_contenttype. Nie widzę już wiersza na stole, gdy odpowiedziałem "tak". ale jeśli odpowiem "nie", zachęci to do następnej migracji, prawda? –

Powiązane problemy