Jeśli chcesz wykonać after_homework
pole ma być opcjonalne, należy użyć null=True
i blank=True
.
class VideoGamePurchase(models.Model):
bought_by = models.ForeignKey(Person)
after_homework = models.OneToOneField(HomeWork, null=True, blank=True)
Nie chcesz, aby primary_key=True
za after_homework
- to sprawiłoby, że after_homework
pole klucza podstawowego VideoGamePurchase
model, co nie ma sensu, jeśli pole jest opcjonalne.
Wygląda na to, że Twoje migracje są pomieszane, ponieważ masz primary_key=True
za after_homework
pole wcześniej. Najłatwiejszą poprawką byłoby rozpoczęcie od nowej bazy danych, usunięcie migracji dla tej aplikacji, a następnie ponowne uruchomienie makemigrations
i migrate
. Tym razem migracja automatycznie utworzy pole klucza podstawowego id
dla VideoGamePurchase
model.