Nếu bạn muốn after_homework
là trường tùy chọn, sau đó bạn nên sử dụng null=True
và blank=True
.
class VideoGamePurchase(models.Model):
bought_by = models.ForeignKey(Person)
after_homework = models.OneToOneField(HomeWork, null=True, blank=True)
Bạn không muốn primary_key=True
cho after_homework
- điều đó sẽ làm cho after_homework
trường khóa chính của VideoGamePurchase
mô hình, không có ý nghĩa nếu trường là tùy chọn.
Có vẻ như quá trình di chuyển của bạn bị rối vì bạn có primary_key=True
cho after_homework
trường trước đó. Cách khắc phục đơn giản nhất là bắt đầu với cơ sở dữ liệu mới, xóa các di chuyển cho ứng dụng đó, sau đó chạy lại makemigrations
và migrate
. Lần này, quá trình di chuyển sẽ tự động tạo ra trường khóa chính id
cho VideoGamePurchase
mô hình.