-
Notifications
You must be signed in to change notification settings - Fork 9
Presuvanie modelu medzi appkami
Michal Hozza edited this page Jun 7, 2016
·
3 revisions
Uspesne vykonane v PR https://github.com/trojsten/web/pull/812, treba kuknut kvoli detailom
- OldApp - stara appka
- NewApp - nova appka
Model sa moze presunut bez zmeny do inej appky. Nezabudneme prestahovat admina, a skontrolovat aj importy.
Treba spravit migracie pre vsetky apppky ktore maju s presunutym modelom nieco docinenia. Vacsinu migracii treba pisat manualne, ale da sa pomoct autovygenerovanymi.
Budeme casto pouzivat:
operations = [
migrations.SeparateDatabaseAndState(
database_operations=database_operations,
state_operations=state_operations,
)
]
,kde sa da manipulovat zvlast zo stavom a zvlast z databazou.
- Vygenerujeme migracie automaticky pomocou manage.py migrate, tie potom upravime/nakopirujeme, tak aby splnali to co je nizsie (urcite ich tam nenechame len tak)
- Vyrobime migracie pre OldApp
- treba najskor pridat migraciu, ktora premenuje tabulku, tak aby sedela pre novu appku (newapp_modelname), iba v databaze, model si v stave este nechame
- treba pomigrovat foreign keys, tato migracia je standardna a zavisi na predoslej
- nakoniec spravime migraciu, ktora zmaze model zo stavu (len zo stavu, tabulku nemazeme, lebo sme ju premenovali), tato migracia zavisi na vsetkych foreign key (a podobnych) migraciach, aj z inych appiek.
- Vyrobime migraciu pre NewApp:
- zoberieme stnadardnu init migraciu a prepiseme ju tak, aby sa udiala len v stave (tabulku nemusime vytvarat, lebo pouzijeme tu premenovanu z OldApp), tato migracia zavisi na OldApp migracii, v ktorej sme premenovali tabulku
- Vyrobime foreign key migracie pre ostatne appky
- toto su standardne migracie, malo by nam vygenerovat automaticky, treba len skontrolovat ci zavisia na na OldApp migracii, v ktorej sme premenovali tabulku
- na tychto migraciach potom zavisi posledna OldApp migracia
- Posquashujeme foreign key migracie
- aby sme vedeli migrovat z cistej db, chceme sa zbavit starych zavislosti na neexistujuci model
- squashneme vsetky migracie kde sa vyskytoval OldApp FK, a zmazeme ho zo squashovanych migracii ak tam nahodou zostal
Ak sme generovali squash pomocou djanga 1.9 a py2.7, umazeme b
z b'...'
stringov aby nam to behalo aj s py3