Jeśli nie dbają o danych:
Najlepszy sposób byłoby usunąć bazę danych i uruchomić syncdb
ponownie. Albo można uruchomić:
Dla Django> = 1,5
python manage.py flush
Dla Django < 1,5
python manage.py reset appname
(można dodać --no-input
na końcu polecenia na to, aby pominąć interaktywny wiersz .)
Jeśli nie interesują Cię dane:
Od docs:
syncdb utworzy jedynie tabele dla modeli, które nie zostały jeszcze zainstalowane. Nigdy nie wyemituje instrukcji TABLE, aby dopasować zmiany wykonane do klasy modelu po instalacji. Zmiany w klasach modeli i bazach danych Schematy często wiążą się z pewną formą niejednoznaczności w postaci , aw tych przypadkach Django musiałoby zgadywać, jakie zmiany należy wprowadzić w poprawnym . Istnieje ryzyko, że krytyczne dane zostaną utracone w procesie .
Jeśli wprowadzono zmiany w modelu i chcą zmieniać tabele bazy danych wszystkich, użyj polecenia SQL wyświetlaczu nowa struktura SQL i porównać to do istniejącej tabela schematu wypracować zmiany .
https://docs.djangoproject.com/en/dev/ref/django-admin/
referencyjny: FAQ - https://docs.djangoproject.com/en/dev/faq/models/#if-i-make-changes-to-a-model-how-do-i-update-the-database
Ludzie również polecić Południowa (http://south.aeracode.org/docs/about.html#key-features), ale nie próbowałem go.
Południowej jest naprawdę dobre dla automatycznie obsługuje migracje. Trochę się do tego przyzwyczaja, ale oszczędza wiele kłopotów z porzucaniem i odtwarzaniem baz danych podczas programowania i jest koniecznością, gdy witryna jest już dostępna i musisz zmienić strukturę db, gdy masz w niej cenne dane. – thepeer
Nie mam opcji resetowania "nieznany reset komend" – user798719
** RESET COMMAND DEPRECIATED **. W Django 1.5 polecenie zostało zaktualizowane do 'flush'. spróbuj użyć polecenia 'python manage.py flush' lub' python manage.py flush --noinput', aby pominąć interaktywny monit. – agconti