PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Django OneToOneField avec un champ vide possible

Si vous voulez le after_homework le champ soit facultatif, alors vous devez utiliser null=True et blank=True .

class VideoGamePurchase(models.Model):
    bought_by = models.ForeignKey(Person)
    after_homework = models.OneToOneField(HomeWork, null=True, blank=True)

Vous ne voulez pas primary_key=True pour l'after_homework - ça ferait du after_homework le champ clé primaire du VideoGamePurchase modèle, ce qui n'a pas de sens si le champ est facultatif.

Il semble que vos migrations soient foirées car vous aviez primary_key=True pour l'after_homework champ plus tôt. La solution la plus simple serait de commencer avec une nouvelle base de données, de supprimer les migrations pour cette application, puis de relancer makemigrations et migrate . Cette fois, la migration créera automatiquement un champ de clé primaire id pour le VideoGamePurchase modèle.