सेट नहीं करता है, मैं अपने django मॉडल माइग्रेट करने के लिए दक्षिण का उपयोग करता हूं। हालांकि दक्षिण में एक बुरा बग है। यह Postgres डेटाबेस में डिफ़ॉल्ट मान सेट नहीं करता है। उदाहरण:django दक्षिण माइग्रेशन, डिफ़ॉल्ट
created_at = models.DateTimeField(default = datetime.now)
tag_id = models.PositiveIntegerField(default = 0)
दक्षिण डेटाबेस के लिए इन 2 क्षेत्रों जोड़ना होगा, लेकिन उनके डिफ़ॉल्ट मानों, जो मैन्युअल रूप से किया जाना चाहिए निर्धारित करने के लिए असफल।
क्या इस बग के लिए कोई पैच है?
अद्यतन मैं पहले से ही auto_now_add=True
के साथ डिफ़ॉल्ट तिथि सेट करने की कोशिश की थी, लेकिन वह भी डिफ़ॉल्ट सेट नहीं है। क्षेत्र में null=True
जोड़कर दक्षिण द्वारा उत्पादित माइग्रेशन स्क्रिप्ट में db.alter_column
जोड़ता है। लेकिन केवल NOT NULL
बाधा को हटा देता है, डिफ़ॉल्ट नहीं जोड़ता है। पूर्णांक फ़ील्ड के लिए समान
मैं पोस्टग्रेज़ डेटाबेस में डिफ़ॉल्ट कैसे लागू कर सकता हूं। मेरे पास apis है जो django द्वारा बनाए गए डेटाबेस के साथ सीधे बातचीत करता है। वे डिफ़ॉल्ट रूप से होने की उम्मीद करते हैं। – jerrymouse
आपको स्वयं स्कीमा को संशोधित करने के लिए कस्टम एसक्यूएल का उपयोग करना होगा। आप एसक्यूएल को ['db.execute'] (http://south.aeracode.org/docs/databaseapi.html#db-execute) में पास करके दक्षिण में ऐसा कर सकते हैं। –
डैनियल सिर्फ इसलिए कि Django उपयोगकर्ताओं को स्कीमा स्तर पर फ़ील्ड डिफ़ॉल्ट को बदलने से रोकने की कोशिश करता है, इसका मतलब यह नहीं है कि उन्हें सक्षम नहीं होना चाहिए। मैंने नीचे एक वास्तविक समाधान पोस्ट किया है। – galarant