15

मैंमाइग्रेट ManyToManyField शून्य पर सच है, खाली सच है, मान्यता प्राप्त नहीं है

को

standard = models.ManyToManyField(Standard) 

से एक मॉडल परिवर्तन किया है

standard = models.ManyToManyField(Standard, blank=True, null=True) 
इस एप्लिकेशन परिवर्तन को नहीं पहचानता के लिए

दक्षिण schemamigration?

इस सवाल है, जो अनुत्तरित है की तरह: South migrations and changes to many-to-may fields

+0

जब आप './manage.py schemamigration yourapp --auto' चलाने का प्रयास करते हैं तो दक्षिण में क्या कहता है? –

+0

कोई परिवर्तन नहीं मिला – npradeetw

+0

केवल एक चीज जो मैं सोच सकता हूं वह यह है कि आप 'models.py' को सहेज नहीं रहे हैं, लेकिन मुझे अत्यधिक संदेह है। क्षमा करें मैं मदद नहीं कर सकता। –

उत्तर

28

यही व्यवहार सही है: null डेटाबेस स्तर पर कुछ भी मतलब नहीं है जब एक ManyToManyField के साथ प्रयोग किया। ManyToManyField का आविष्कार संबंध रखने के लिए एक मध्यवर्ती तालिका के निर्माण का कारण बनता है, और हालांकि Django आपकी सुविधा के लिए आपके मॉडल उदाहरण पर standard विशेषता बनाएगा, लेकिन इसका प्रतिनिधित्व करने वाला कोई वास्तविक स्तंभ नहीं है जिसे हटाया जा सकता है। परिभाषा के अनुसार हमेशा संबंधों के शून्य उदाहरण हो सकते हैं।

blank=False, हालांकि, व्यवस्थापक ऐप पर प्रभाव पड़ता है, जिससे उपयोगकर्ता को कम से कम एक संबंध चुनने के लिए मजबूर किया जाता है।

(ध्यान दें कि Django की अंतर्निहित माइग्रेशन सिस्टम किसी मॉडल में किसी भी बदलाव के लिए माइग्रेशन बनाता है, भले ही यह डेटाबेस को प्रभावित करता है या नहीं। इसलिए यह परिवर्तन माइग्रेशन का कारण बनता है, लेकिन इससे प्रभावित नहीं होगा डेटाबेस या आप रिश्ते के शून्य उदाहरण प्राप्त कर सकते हैं या नहीं।)

संबंधित मुद्दे