Odpowiedź, którą zaakceptowałeś, zadziała, ale nie jest to właściwe rozwiązanie, ponieważ będziesz mógł przechowywać obiekty bez relacji z innym obiektem i zakładam, że tego nie chcesz.
Po zmianie bazy danych lub usunięciu jej bez usuwania plików migracji, django zrozumie, że istnieje zapełniona baza danych i że zostały już utworzone oba modele, więc jeśli dodasz puste pole wymagane do obiektu już utworzonego, wyniknie w błędzie. Prawidłowe rozwiązanie będzie usunąć pliki migracji (lub zmienić nazwę folderu, po prostu być bezpieczne) i po prostu uruchomić:
python manage.py makemigrations
python manage.py migrate
Zmieniano: przed mogrations run najpierw usunąć bazy danych lub tabel.
Jeśli po prostu popełnił błąd użytku null=True
lub wartość domyślną i nie chcesz, aby oczyścić bazę danych masz inne opcje w zależności od stanu bazy danych:
pierwszy przypadek: Jeśli każdy wizyjne obiekt już odniesieniu do użytkownik może po prostu usunąć null=True
lub default=""
i uruchom:
python manage.py makemigrations
i po:
python manage.py migrate
drugim przypadku: Jeśli niektóre pola użytkownika są nieważne lub wartość domyślną, która nie jest użytkownikiem, a następnie trzeba będzie uruchomić niestandardową SQL ustawić każde pole do domyślnej USER_ID przed usunięciem null=True
lub the default=""
i bieg migracje.
Jednak zakładam, że pierwszy przypadek będzie wystarczający dla ciebie, jeśli nie chcesz usunąć bazy danych, przypuszczam, że wypełniłeś pole użytkownika odpowiednimi danymi. Chciałem dać opcję, jeśli ktoś ma taką sytuację.
Możliwy duplikat http://stackoverflow.com/questions/26185687/you-are-trying-to-add-a-non-nullable-field-new-field- to-userprofile-without-a – trpt4him