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

  • 3biblecom

    3biblecom

    23 NİSAN 2011
  • David Wills

    David Wills

    31 Aralık 2007
  • taliajoy18

    taliajoy18

    12 Temmuz 2011