2 Şubat 2012 Perşembe

Models

(http://www.djangobook.com)

Django framework'te en etkiliyici bulduğum yapılardan biri de model'ler (diğer frameworklerde geçen entity kelimesi nedense daha sevimli geliyor)
Tabloda ki veri alanlarını modeline yaz,

class Book(models.Model):
title = models.CharField(maxlength=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
settings.py'den db bağlantı ayarlarını yap ve Console'dan

manage.py syncdb
Hooppp...Database tabloda hazır. E nasıl kullanacağız Peki??
books = Book.object.order_by('name')

kitaplar geldi bile.. (tabii kayıt atmadığımızdan boş ama kaydı atmış gibi deam edelim.)
Süper !!

Şimdi biraz sorgu konularına girelim;

tüm objeler :

books = Book.objects.all()

Filtrelemek istersek

Book.objects.filter(name="django simple")
Publisher.objects.filter(country="U.S.A.", state_province="CA")

like çekersek :

Publisher.objects.filter(name__contains="press")

tek bir obje çekmek istersek :

Publisher.objects.get(name="Apress Publishing")

tabi bu method sonucunda birden fazla obje gelirse hata veriliceği unutulmamalı. Dbden tüm kayıtları çekip,listeden de tabi ilk veriyi alabiliriz:

Publisher.objects.all()[0]

ilk örneğimizde sıralama ile çekmiştik, bu işlemi biraz daha geliştirilelim.Önce state sonra adrese göre sıraların

Publisher.objects.order_by("state_provice", "address")

tersten sıralamak istersek

Publisher.objects.order_by("-name")

Bu sıralama işini default olarakda gerçekleştirebiliriz. bunun için model classa şunu ekleyebiliriz.

class Meta:
ordering = ["name"]


Bunları karma olarak da kullanabiliriz:

Publisher.objects.filter(country="U.S.A.").order_by("-name")


Hiç yorum yok: