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

  • PhoneBuff

    PhoneBuff

    10 HAZİRAN 2011
  • Crossover

    Crossover

    18 HAZİRAN 2007
  • Vladimir Jenko

    Vladimir Jen

    1 Mart 2010