अगर आप 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
. के लिए मॉडल।