PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Django OneToOneField con possibile campo vuoto

Se vuoi il after_homework campo per essere facoltativo, quindi dovresti usare null=True e blank=True .

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

Non vuoi primary_key=True per il after_homework - questo renderebbe il after_homework il campo della chiave primaria del VideoGamePurchase modello, che non ha senso se il campo è facoltativo.

Sembra che le tue migrazioni siano incasinate perché avevi primary_key=True per il after_homework campo prima. La soluzione più semplice sarebbe iniziare con un nuovo database, eliminare le migrazioni per quell'app, quindi eseguire nuovamente makemigrations e migrate . Questa volta, la migrazione creerà automaticamente un campo chiave primaria id per il VideoGamePurchase modello.