19 Nisan 2014 Cumartesi

Kayıt Sıralama

Kullanıcıya kayıtları gösterirken, kullanıcının istediği bir alan üzerinde sıralama yapmasına izin verebiliriz. Daha önce doktorları listelediğimiz uygulamada kullanıcıya bazı alanlara göre listeleme imkanı sunalım. Bunun için doktor_listesi.html şablonundaki başlıkları şu şekilde değiştirelim.
    <tr>
        <th>Sıra</th>
        <th><a href="?siralama=1">Adi<a/></th>
        <th><a href="?siralama=2">Soyadi</a></th>
        <th>Telefon</th>
        <th>E-Posta</th>
        <th>İşlemler</th>
    </tr>
Dikkat ettiyseniz parametreleri GET metodu ile gönderiyoruz. Şimdi Doktor_listesi görünümünü sıralama olanağı verebileceğimiz şekilde değiştirelim.
def Doktor_listesi(request):
 siralama = 'adi'
 kiriter = request.GET.get('siralama')
 if kiriter:
  siralamaKriteleri = {
   '1':'adi',
   '2':'soyadi'
  }
  if kiriter in siralamaKriteleri:
   siralama = siralamaKriteleri[kiriter]

 doktorlar = Doktor.objects.order_by(siralama)
 return render_to_response('doktor_listesi.html',locals())
Burada yaptığımız işlem; eğer kullanıcı bir parametre girmiş ise girdiği parametreye göre girmediyse varsayılan olarak adi alanına göre sıralama yaptırdık. Burada kiriter değişkenini şablona gönderiyoruz. Bu değişkene göre alan adlarına farklı stiller uygulayarak belli olmasını sağlayabilirsiniz.
Tersten Sıralama
Hatırlarsanız Modeller'i işlerken tersten sıralama yapmak için alan adı başına - işareti koymamız gerektiğin söylemiştik. Verdiğimiz örnekte tersten sıralama yapmak isterseniz şu şekilde kullanabilirsiniz.
doktorlar = Doktor.objects.order_by("-"+siralama)
Kaynakça
  • Mustafa Başer Django Kitabı

0 yorum :

Yorum Gönder