10 de Marzo de 2016 · 1 min de lectura
Recentment ens hem topat amb un projecte que tenia un munt de migracions (unes 650) d'un munt d'aplicacions (unes 28). Resultava que aquest nombre tant elevat de migracions repercutia a l'hora de crear i aplicar migracions noves, fins al punt de durar més de 20 minuts, tant a l'hora de generar-les com d'aplicar-les.
En un moment del desenvolupament del projecte, en el qual hem tingut els tres entorns (desenvolupament, pre-producció i producció) igualats a nivell de migracions, hem de decidit esborrar totes les migracions, inicialitzar la taula de migracions de Django, crear les migracions de les aplicacions "built-in" en mode "--fake", crear les migracions inicials de cada aplicació i, finalment, aplicar les migracions de totes les aplicacions en mode "--fake-initial". Els passos, de manera resumida, serien:
delete from django_migrations;
python manage.py migrate --fake
python manage.py makemigrations
python manage.py migrate --fake-initial
El resultat ha estat que, migracions que tardaven més de vint minuts ara se generen i s'apliquen en qüestió de segons.