PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Django OneToOneField mit möglicherweise leerem Feld

Wenn du die after_homework willst optional sein, dann sollten Sie null=True verwenden und blank=True .

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

Sie wollen nicht primary_key=True für die after_homework - das würde die after_homework machen das Primärschlüsselfeld von VideoGamePurchase model, was keinen Sinn macht, wenn das Feld optional ist.

Es sieht so aus, als wären Ihre Migrationen durcheinander geraten, weil Sie primary_key=True hatten für die after_homework Feld früher. Die einfachste Lösung wäre, mit einer neuen Datenbank zu beginnen, die Migrationen für diese App zu löschen und dann makemigrations erneut auszuführen und migrate . Dieses Mal erstellt die Migration automatisch ein Primärschlüsselfeld id für den VideoGamePurchase Modell.