Jika Anda menginginkan after_homework menjadi opsional, maka Anda harus menggunakan null=True dan blank=True .
class VideoGamePurchase(models.Model):
bought_by = models.ForeignKey(Person)
after_homework = models.OneToOneField(HomeWork, null=True, blank=True)
Anda tidak ingin primary_key=True untuk after_homework - yang akan membuat after_homework bidang kunci utama VideoGamePurchase model, yang tidak masuk akal jika bidangnya opsional.
Sepertinya migrasi Anda kacau karena Anda memiliki primary_key=True untuk after_homework lapangan sebelumnya. Perbaikan termudah adalah memulai dengan database baru, hapus migrasi untuk aplikasi itu, lalu jalankan kembali makemigrations dan migrate . Kali ini, migrasi akan secara otomatis membuat bidang kunci utama id untuk VideoGamePurchase model.