Django da oluşturduğunuz bir uygulamada Modelinizi yazdınız ve syncdb parametresi ile veritabanı tablolarını oluşturdunuz. Daha sonra model sınıfınızda tablo yapısını etkileyecek düzenlemeler yaptınız ve tekrar syncdb ile tablonuzu oluşturmaya çalıştınız. Bir baktınız ki tablo da bir değişiklik yok, olduğu gibi duruyor. Bu Django’nun zayıf yanı oluyor ve güncel veritabanı tablonuzu oluşturmak için önceki tabloyu silmeniz gerekiyor. Ayrıca tablonuzun varolan sütunlarını etkilemeyen bir düzenleme varsa; bu değişiklik yeni sütun ekleme gibi bir şeyse ve tablonuz da ki mevcut veriler yerinde dursun diyorsanız Django’dan bunu şimdilik beklemeyin. Belki ileride bu özelliği eklerler…
Yukarıdaki gibi bir durum ile karşı karşıyaysanız South modülünü kullanmak durumundasınız. Öncelikle South modülünü kuralım: Bu modülü kurmanız için; ya buradan istediğiniz sürümü indirip kuracaksınız, ya setuptools modülü kuruluysa
easy_install South
komutuyla kuracaksınız, ya da easy_install ile pip modülünü kurup
pip install South
komutuyla modülü kurabilirsiniz.
South modülünü kurduysanız bir Django projesi oluşturup, uygulama oluşturalım…
django-admin.py startproject southdenemesi cd southdenemesi python manage.py startapp blog
southdenemesi adında bir proje oluşturduk. Sonra bu proje dizinine girip blog adında bir uygulama oluşturduk. blog dizinine girip models.py dosyasını metin düzenleyici ile açıp basit olarak şunu yazalım:
from django.db import models class Post(models.Model): title = models.CharField(max_length=255) content = models.TextField()
Sonra proje dizinine dönüp settings.py dosyasını metin düzenleyicisi ile açalım.
INSTALLED_APPS = (
# ...
'south',
'blog',
# ...
)
Veritabanı ayarınızı yaptıktan sonra south ile birlikte blog uygulamamızı projemize ekliyoruz ve dizin içerisinde konsolu açıp tablolarımızı oluşturuyoruz.
python manage.py syncdb
Ardından
python manage.py convert_to_south blog
ile uygulamamızı south modülü için ilklendiriyoruz. Sonra models.py dosyamızı şu şekilde değiştiriyoruz.
from django.db import models class Post(models.Model): title = models.CharField(max_length=255) content = models.TextField() pub_date = models.DateTimeField(auto_now_add=True)
Modelimizdeki değişikliği southa bildiriyoruz.
python manage.py schemamigration blog --auto
Bu komutu verince bize iki seçenek sunacaktır. “2″ yazıp devam ettiğimizde bize sütunun boş bırakılamayacağı için tarih bilgisi girmemizi istiyor(Eğer veri varsa her satır için aynı tarih verisi işleniyor sanırım). Bunu da
datetime.datetime.now()
kodunu yazarak hallediyoruz ve migration yani göç dosyamız, blog uygulamamızın içinde oluşturulan migrations dizininde 0002 ile başlayan bir Python dosyası olmuş oluyor. Oluşturulan göç dosyasını uygulamak için
python manage.py migrate blog
komutunu veriyoruz ve yeni tablo sütunu tablomuzdaki yerini alıyor. Eğer south uygulamasını projeye ekleyip syncdb ile tablosunu oluşturduktan sonra bir uygulama eklerseniz ilklendirmek için
python manage.py schemamigration uygulama --initial
işlemek için de
python manage.py migrate uygulama
komutunu veriyoruz. Daha sonraki düzenlemeleri yukarıdaki gibi –auto parametresi ile işleyebilirsiniz… Benim bilgim bu kadar. Daha fazla bilgi için buraya bakabilirsiniz. Hatam varsa bildiriniz.
Bu yazı Creative Commons-BY-SA ile lisanslanmıştır. Bu yazıyı ilk sahibini belirtmek ve aynı lisansla dağıtmak koşuluyla kullanabilirsiniz. TweetBenzer Yazılar:















