Om du vill ha after_homework
fältet för att vara valfritt, bör du använda null=True
och blank=True
.
class VideoGamePurchase(models.Model):
bought_by = models.ForeignKey(Person)
after_homework = models.OneToOneField(HomeWork, null=True, blank=True)
Du vill inte ha primary_key=True
för after_homework
- det skulle göra after_homework
det primära nyckelfältet för VideoGamePurchase
modell, vilket inte är vettigt om fältet är valfritt.
Det verkar som om dina migreringar är trasiga eftersom du hade primary_key=True
för after_homework
fältet tidigare. Den enklaste lösningen skulle vara att börja med en ny databas, ta bort migreringarna för den appen och sedan köra om makemigrations
och migrate
. Den här gången skapar migreringen automatiskt ett primärnyckelfält id
för VideoGamePurchase
modell.