2011-03-24 68 views
0

我試圖優化我非常簡單的分頁系統。我取出由我的模型具體內容與在Django中查詢分組數據

​​

,我希望能夠在相同的請求得到,下一個和前面的PK從我的ID,以顯示下一個/ PREC按鈕基於Pk或發佈。我看了一下分頁,但沒有找到如何解決我的prec = slug-pk-1,slug,next = slug-pk + 1的問題。 目前我已經添加到我的模型中的字段,以獲取下一個和絕對的URL,但這是相當醜陋的,並造成大量無用的SQL查詢。你可以看看這裏的輸出:http://diasporamas.com/le-barbier-de-paris/watch

任何想法如何提高我的抓取?

謝謝!

+0

好吧,我會問一個愚蠢的問題:)如果你從數據庫中獲取一個對象,你將如何讓下一個和以前的? (請記住,由於例如數據庫回滾等原因,PK編號中可能存在漏洞) 如果您想要使用分頁(和下一個/上一個)按鈕,則需要一組對象,然後分頁它每頁的對象數量將等於1。但!那麼你會在頁面之間變得麻木,而不是對象本身。 – Jerzyk 2011-03-24 13:22:04

回答

1

我不認爲在一個查詢中可以這樣做。

我能想到的最有效的方法是:

current = myModel.objects.get(slug='my slug bla bla bla') 
next = None 
next_pk = current.pk + 1 
previous = None 
prev_pk = current.pk - 1 
for mod in myModel.objects.filter(pk__in=(next_pk, prev_pk)): 
    if mod.pk == next_pk: 
     next = mod 
    else: 
     prev = mod 
+0

那實際上是我用它來做的方式。但我認爲可能有一個先進的filterig功能,可以在多個過濾器上獲取obects ... – Oleiade 2011-03-24 13:35:03

+0

您可以使用[Q對象]執行復雜查詢(http://docs.djangoproject.com/en/dev/topics/ db/queries /#complex-lookups-with-q-objects)但在這裏沒有幫助 - 在查詢其他文件之前,您仍然需要執行第一個查詢以獲取當前文章的ID。 – dgel 2011-03-24 13:51:24