partir modelos manage inspectdb existente datos crear consultas con avanzadas mysql django migration django-south

modelos - django mysql



Migración sur de Django-Añadiendo índices FULLTEXT (1)

Necesito agregar un índice FULLTEXT a uno de los campos de mi modelo de Django y entender que no hay una funcionalidad integrada para hacer esto y que dicho índice debe agregarse manualmente en mysql (nuestra base de datos de back-end).

Quiero que este índice se cree en todos los entornos. Entiendo que los cambios en el modelo pueden tratarse con las migraciones al sur de Django, pero ¿hay alguna manera de que pueda agregar dicho índice FULLTEXT como parte de una migración?

En general, si hay que ejecutar algún SQL personalizado, ¿cómo puedo hacer que sea parte de una migración?

Gracias.


Puedes escribir cualquier cosa como una migración. ¡Ese es el punto!

Una vez que tenga South en marcha, escriba python manage.py schemamigration myapp --empty my_custom_migration para crear una migración en blanco que pueda personalizar.

Abra el archivo XXXX_my_custom_migration.py en myapp/migrations/ y escriba su migración SQL personalizada allí en el método de forwards . Por ejemplo, podrías usar db.execute

La migración podría ser algo como esto:

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"