Se você quiser o
after_homework campo seja opcional, então você deve usar null=True e blank=True . class VideoGamePurchase(models.Model):
bought_by = models.ForeignKey(Person)
after_homework = models.OneToOneField(HomeWork, null=True, blank=True)
Você não quer
primary_key=True para o after_homework - isso tornaria o after_homework o campo de chave primária de VideoGamePurchase model, o que não faz sentido se o campo for opcional. Parece que suas migrações estão erradas porque você tinha
primary_key=True para o after_homework campo mais cedo. A solução mais fácil seria começar com um banco de dados novo, excluir as migrações desse aplicativo e executar novamente makemigrations e migrate . Desta vez, a migração criará automaticamente um campo de chave primária id para a VideoGamePurchase modelo.