2012-11-22 24 views
6

i sayfalandırma MongoDB ve mongoengine kullanmayla ilgili bir sorum var. i gelecekte kayıtların milyonlarca olacak bir tablo var. ve ben böyle bir çağrı yapıyorum.Mongongeng kullanarak pagination nasıl yapılır?

de ben bu

list = Books.objects.all() 
    paginator = DiggPaginator(list, 20, body = 10, tail = 2) 

burada ben bütün tabloyu açın ve sonra sayfalama yapmak doğru yaklaşımdır emin değilim ve biz ertesi sayfa için tekrar kod çalışır yukarıda ve 2. ya da herhangi bir sayfayı getirir.

bu doğru bir yaklaşımdır veya bunu yapmak için daha iyi bir yolu vardır.

cevap

16

Sayfalamaya başlamak için skip ve limit adreslerinden QuerySet'u kullanabilirsiniz. her sayfada 10 öğe sınırlaması ikinci sayfayı göstermek istiyorsanız Örneğin
, böyle yapabilirsiniz:

page_nb = 2 
items_per_page = 10 

offset = (page_nb - 1) * items_per_page 

list = Books.objects.skip(offset).limit(items_per_page) 
+0

benim yaklaşım doğru değil anlamına mı geliyor? ya da bu sunucu üzerinde herhangi bir ekstra yük koymadan da iyi çalışacaktır. kullanarak – user493550

+1

'Books.objects.all()', masanız sunucuda bazı yük koyacağız kayıtları milyonlarca varsa bu yüzden, tablodan tüm dokümanları isteyin. Neyse, kullanımlar için etkili olanı test etmek için bir kriter belirlemek için önemsiz olmalıdır. – Eric

İlgili konular