अगर आप after_homework चाहते हैं फ़ील्ड वैकल्पिक होने के लिए, तो आपको null=True . का उपयोग करना चाहिए और blank=True ।
class VideoGamePurchase(models.Model):
bought_by = models.ForeignKey(Person)
after_homework = models.OneToOneField(HomeWork, null=True, blank=True)
आप primary_key=True नहीं चाहते हैं after_homework . के लिए - इससे after_homework . बन जाएगा VideoGamePurchase . की प्राथमिक कुंजी फ़ील्ड मॉडल, जिसका कोई मतलब नहीं है यदि फ़ील्ड वैकल्पिक है।
ऐसा लगता है कि आपके माइग्रेशन में गड़बड़ी हुई है क्योंकि आपके पास primary_key=True था after_homework . के लिए पहले क्षेत्र। सबसे आसान समाधान यह होगा कि एक नए डेटाबेस के साथ शुरुआत करें, उस ऐप के लिए माइग्रेशन को हटा दें, फिर makemigrations को फिर से चलाएँ। और migrate . इस बार, माइग्रेशन स्वचालित रूप से एक प्राथमिक कुंजी फ़ील्ड id बना देगा VideoGamePurchase . के लिए मॉडल।