Django OneToOneField with possible blank field
If you want the after_homework
field to be optional, then you should use null=True
and blank=True
.
class VideoGamePurchase(models.Model): bought_by = models.ForeignKey(Person) after_homework = models.OneToOneField(HomeWork, null=True, blank=True)
You don't want primary_key=True
for the after_homework
- that would make the after_homework
the primary key field of the VideoGamePurchase
model, which doesn't make sense if the field is optional.
It looks like your migrations are messed up because you had primary_key=True
for the after_homework
field earlier. The easiest fix would be to start with a fresh database, delete the migrations for that app, then rerun makemigrations
and migrate
. This time, the migration will automatically create a primary key field id
for the VideoGamePurchase
model.