SORU
4 Temmuz 2011, PAZARTESİ


Django - sorgu sonuçlarını sınırlandırma

Bir model son 10 örneklerini almak istiyorum ve bu kodu vardır:

 Model.objects.all().order_by('-id')[:10]

Öncelikle tüm örneklerini almak, ve sonra sadece 10 son olanlar doğru mu? Daha etkili başka bir yöntem var mı?

CEVAP
4 Temmuz 2011, PAZARTESİ


Django querysets tembel. Sorguda özellikle sonuç için soruyorum sadece veritabanı vurmak anlamına gelir.

Ya aslında bir sorgu sonucu yazdırmak kullanana kadar başka hiçbir veritabanı erişimi ile filtreleyebilirsiniz.

Sizin kod sadece son 10 öğeleri getirmek için bir sql sorgu yürütür aşağıda gördüğünüz gibi.

In [19]: import logging                                 
In [20]: l = logging.getLogger('django.db.backends')    
In [21]: l.setLevel(logging.DEBUG)                      
In [22]: l.addHandler(logging.StreamHandler())      
In [23]: User.objects.all().order_by('-id')[:10]          
(0.000) SELECT "auth_user"."id", "auth_user"."username", "auth_user"."first_name", "auth_user"."last_name", "auth_user"."email", "auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active", "auth_user"."is_superuser", "auth_user"."last_login", "auth_user"."date_joined" FROM "auth_user" ORDER BY "auth_user"."id" DESC LIMIT 10; args=()
Out[23]: [<User: hamdi>]

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • captainpuppys2000

    captainpuppy

    20 HAZİRAN 2013
  • FamilyFeud

    FamilyFeud

    22 AĞUSTOS 2006
  • KendrickLamarVEVO

    KendrickLama

    9 ŞUBAT 2011