2011-03-28 28 views
19

Django modelimin alanlarından birine bir FULLTEXT dizini eklemeli ve bunu yapmak için yerleşik bir işlev olmadığını ve bu tür bir dizinin mysql (el DB) sonu.Django güney geçişi - FULLTEXT dizinleri ekleme

Bu dizinin her ortamda oluşturulmasını istiyorum. Model değişikliklerinin Django güney göçü ile ele alınabileceğini anlıyorum, ancak bir göçün parçası olarak böyle bir FULLTEXT endeksi ekleyebileceğim bir yol var mı?

Genel olarak, çalıştırılması gereken herhangi bir özel SQL varsa, bunu bir geçişin bir parçası haline nasıl getirebilirim.

Teşekkürler.

cevap

31

Göç olarak herhangi bir şey yazabilirsiniz. Önemli olan bu!

yukarı olacak ve South edindikten sonra, python manage.py schemamigration myapp --empty my_custom_migration yazın özelleştirebileceğiniz boş bir göç oluşturun.

myapp/migrations/'da XXXX_my_custom_migration.py dosyasını açın ve forwards yönteminde özel SQL geçişinizi buraya yazın.

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" 
: Örneğin böyle bir şey görünebilir db.execute

göç ​​kullanabilirsiniz