2015-07-12 9 views
8

Po pierwsze, pytam o migrację Django wprowadzoną w wersji 1.7, a nie south.Jak mogę pominąć migrację za pomocą polecenia migracji Django?

Załóżmy, że mam migracje 001_add_field_x, 002_add_field_y i oba z nich są stosowane do bazy danych. Teraz zmienię zdanie i postanawiam przywrócić drugą migrację i zastąpić ją inną migracją 003_add_field_z.

Innymi słowy, chcę zastosować 001 i 003, pomijając 002, jak mogę to zrobić?

P.S. Wiem, że mogę migrować wstecz do 001, ale po wykonaniu migracji 003 i wykonaniu polecenia migracji, od 001 do 003 wszystkie zostaną zastosowane, prawda?

Odpowiedz

23

Można użyć opcji --fake.

Po przywróceniu 0001 można uruchomić

python manage.py migrate <app> 0002 --fake 

a następnie uruchomić

python manage.py migrate <app> #Optionally specify 0003 explicitly 

która miałaby zastosowanie jedynie 0003 w tym przypadku.

Jeśli nie chcesz śledzić ten proces dla wszystkich Środowisko/innych deweloperów, można po prostu usunąć pliki migracji i uruchomić nową makemigration i zobowiązać się, że plik - i tak nie działają migrate z opcją --fake

2

Nie dotyczy tego konkretnego przypadku, ale jeśli ktoś chce lub musi przejść wszystkie niezastosowane migracje, to można stosować:

python manage.py migrate --fake 

tylko oszczędza trochę pisania.

Powiązane problemy