2015-05-24 13 views
10

Od wersji Django 1.8 polecenie makemigrations ma --name, -noption do określania niestandardowej nazwy dla utworzonego pliku migracji.Czy można bezpiecznie zmienić nazwę pliku migracji Django?

Chciałbym wiedzieć, czy w starszych wersjach Django jest bezpieczne tworzenie pliku migracji z automatycznie wygenerowaną nazwą, a następnie ręczna zmiana nazwy pliku. Wydaje się działać zgodnie z oczekiwaniami. Czy istnieje potencjalne ryzyko?

Odpowiedz

15

Działa to z niewielkim zastrzeżeniem: Django nie będzie już wiedział, że migracja o zmienionej nazwie zostanie zastosowana.

więc kroki do zmiany nazwy migracji są:

  1. Zmień nazwę pliku.
  2. Przełóż wszystkie zależności do nowego pliku.
  3. Jeśli migracja o zmienionej nazwie została już zastosowana, zastosuj ją ponownie, używając --fake.

Jeśli jest to zupełnie nowa migracja, 2 i 3 nie będą miały zastosowania, a zmiana nazwy jest całkowicie poprawna.

6

To się dzieje w Django za każdym razem, gdy migracje są przyciśnięte. Wygenerowany nowy plik zawiera zmienną klasy replaces, która zawiera listę plików migracyjnych, które są zastępowane.

Tak, aby zmienić nazwę pliku migracji plików dodatek w następującej zmiennej w klasie Migracji:

replaces = [('app name', 'migration file name'), ] 

I wszystko działa jak to miało miejsce przed zmianą pliku.

Powiązane problemy