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

  • 1881 Animation

    1881 Animati

    5 EKİM 2013
  • Blendtec

    Blendtec

    30 EKİM 2006
  • Hidden Wolf TV

    Hidden Wolf

    1 EKİM 2009