PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Django OneToOneField com possível campo em branco


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.