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

  • bobono1baby

    bobono1baby

    14 AĞUSTOS 2011
  • Droid Life

    Droid Life

    17 Kasım 2009
  • LiteralMSPaint

    LiteralMSPai

    27 EKİM 2010