2011-03-28 12 views
19

मुझे अपने Django मॉडल के फ़ील्ड में से एक में एक FULLTEXT अनुक्रमणिका जोड़ने और समझने की आवश्यकता है कि ऐसा करने के लिए कार्यक्षमता में कोई निर्मित नहीं है और ऐसा सूचकांक mysql में मैन्युअल रूप से जोड़ा जाना चाहिए (हमारी पीठ अंत डीबी)।Django दक्षिण माइग्रेशन - FULLTEXT इंडेक्स जोड़ना

मैं चाहता हूं कि यह सूचकांक हर पर्यावरण में बनाया जाए। मैं समझता हूं कि मॉडल परिवर्तनों को डीजेगो दक्षिण माइग्रेशन के साथ निपटाया जा सकता है, लेकिन क्या माइग्रेशन के हिस्से के रूप में मैं इस तरह की एक FULLTEXT अनुक्रमणिका जोड़ सकता हूं?

सामान्य रूप से, यदि कोई कस्टम एसक्यूएल है जिसे चलाने की जरूरत है, तो मैं इसे माइग्रेशन का हिस्सा कैसे बना सकता हूं।

धन्यवाद।

उत्तर

31

आप माइग्रेशन के रूप में कुछ भी लिख सकते हैं। यही तो बात है!

एक बार जब आप South ऊपर और चलते हैं, तो एक खाली माइग्रेशन बनाने के लिए python manage.py schemamigration myapp --empty my_custom_migration टाइप करें जिसे आप कस्टमाइज़ कर सकते हैं।

XXXX_my_custom_migration.py फ़ाइल myapp/migrations/ में खोलें और forwards विधि में अपने कस्टम SQL माइग्रेशन में टाइप करें। उदाहरण के लिए आप db.execute

प्रवास इस्तेमाल कर सकते हैं कुछ इस तरह दिख सकता है:

class Migration(SchemaMigration): 

    def forwards(self, orm): 
     db.execute("CREATE FULLTEXT INDEX foo ON bar (foobar)") 
     print "Just created a fulltext index..." 
     print "And calculated {answer}".format(answer=40+2) 


    def backwards(self, orm): 
     raise RuntimeError("Cannot reverse this migration.") 
     # or what have you 


$ python manage.py migrate myapp XXXX # or just python manage.py migrate. 
"Just created fulltext index...." 
"And calculated 42" 
संबंधित मुद्दे