sql >> Base de Datos >  >> RDS >> PostgreSQL

Django OneToOneField con posible campo en blanco

Si quieres el after_homework campo sea opcional, entonces debe usar null=True y blank=True .

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

No quieres primary_key=True para el after_homework - eso haría el after_homework el campo de clave principal de VideoGamePurchase modelo, que no tiene sentido si el campo es opcional.

Parece que tus migraciones están en mal estado porque tenías primary_key=True para el after_homework campo antes. La solución más fácil sería comenzar con una base de datos nueva, eliminar las migraciones de esa aplicación y luego volver a ejecutar makemigrations y migrate . Esta vez, la migración creará automáticamente un campo de clave principal id para la VideoGamePurchase modelo.