pip install South
kurduktan sonra bu aracı kullanmak istediğimiz uygulamada INSTALLED_APPS ın içinde belirtmeliyiz.
INSTALLED_APPS = (
# ...
'south',
# ...
)
İlk Migration
Syncdb işlemininin ardından south modelimizi ilklendirmeliyiz. Henüz daha veritabanımıza veri eklemedik. Burada veritabanı boşken eklenen migration anlatılacak.ilk yaptığımız modele migration yaparsak, ilk migration olarak alır. Onun üzerinde yapılan her değişikliği yeni bir migration olarak kaydeder. Migration olmasını istediğiniz app’ı ilklendirmek gerekmektedir. Şu şekilde:
python manage.py schemamigration app_ismi --initial
ardından bize 1 mi 2 gibi tarzında soru sorduğunda 2 yi seçip
oluşturmuş olduğumuz migrationı uygulamak için değişikliği yaptığımız app modelinden etkilenen app’leri migrate yapmalıyız.Bu dosyaları zaten programı koştuğumuzda uyarı olarak bize belirtecektir.Yapmanız gereken o dosyalar için:
python manage.py migrate app_ismi
yazmak.Birden fazla dosyanız varsa sadece:
python manage.py migrate
yazmanız yeterli.
Normal Migration
Migration dosyalarınızı oluşturdunuz ve ilklendirilmiş dosyanızda sonrasında değişiklik yapma ihtiyacı hissettiniz. O halde:
python manage.py schemamigration app_ismi --auto
değişikliği yaptığınız app’te auto işlemini gerçekleştirmeniz gerekmektedir. Daha sonra bu modeli import ettiğiniz appleri migrate etmeniz gerekmektedir, yani bu değişiklikten etkilenen appleri.
manage.py migrate app_name
eğer birden fazlaysa sadece
manage.py migrate
yazmanız yeterli olacaktır.
App Dönüşümü
Yukarıda anlatılan işlemler veritabanımıza henüz veri eklemeden önce , daha sonra yapılacak değişikliklere karşı oluşturulan migrationdan bahsedildi. Şimdi ise bu başlık altında var olan veriler üzerinde sonradan eklenen migration olayları anlatılacak. Diyelim proje oluşturuldu veritabanı hazır veriler yerleştirildi sonradan migrate işlemleri eklemek istediniz. Yukarıda ki işlemleri django anlayamaz o hep var olan veri tabanını muhafaza etmeye çalışır.Bu durumda migration işlemleri şu şekilde gerçekleştirilir.
manage.py convert_to_south app_ismi
yaparak app’a south dönüşümü yapılır. Ardından o appı ilklendirmek gerekir
python manage.py schemamigration app_name --initial
ilklendirilen app’tan etkilenen dosyalara sahte migrateler yapmak gerekir.
python manage.py migrate app_ismi 0001 --fake
bu sayede sonradan migrate işlemlerini sahte olarak yaparız. Normal migrationdan farksızdır.
Sonraki migrationlarda yine aynı yapı olan:
python manage.py schemamigration app_ismi --auto
python manage.py migrate
komutları ile migrationları gerçekleştirebiliriz.
ÖZET
Veritabanı işlemlerinde var olan modelleri sonradan değiştirme işlemlerinde migration kullanımına göz attık. Yapılan migrationlara göz atmak isterseniz şu komutu kullanmanız yeterli olacaktır.
manage.py migrate --list
Hiç yorum yok:
Yorum Gönder