2010-02-10 103 views
2

我有一個查詢根據特定的字段對錶進行排序。該表與一個競賽有關,因此瞭解該位置非常重要。如何在Django中查詢枚舉結果?

由於表可以增長到很多行,我使用通用視圖對它進行分頁(每頁25行),但是我得到的問題是在表格中顯示編號位置。該信息使用order_by子句生成。

Result.objects.all().order_by('field') 

由於我使用通用視圖能夠輕鬆分頁,我不使用enumerate

起初有讓我調整結果的任何視圖功能,例如,我想使用forloop.counter來枚舉沒有表格的位置,但當然,當您呈現第100頁時,我們會得到數字1,2,3,4,5 ... 25,而不是2500 ,2501,2502 ...

我已經看到了annotate()方法,看我是否可以添加到每個結果它佔據的位置l,但似乎只是添加像man這樣的統計數據......

有什麼方法可以將每個查詢結果添加到它所佔據的位置嗎?

+0

當你能夠得到你的通用視圖頁碼模板可以一起用它來與forloop.counter來計算正確的位置。如果每頁有25個結果,並且想要計算第二頁的值,則只需使用以下代碼:forloop.counter +(pagenumber - 1)* 25 – Jens 2010-02-10 10:35:13

回答

3

如果你在你的模板的時候,你可以使用類似:

{{ forloop.counter0|add:page.start_index }} 

start_index在分頁的頁面對象爲您提供了該網頁從1開始的起始索引。當然,周圍的其他方法可能是更具可讀性...

{{ page.start_index|add:forloop.counter0 }} 
+0

鏈接:http://docs.djangoproject.com/zh/1.1/topics/pagination/#page-objects – 2010-02-10 10:35:51

+0

太棒了!有用! ;-) – Khelben 2010-02-10 10:42:50

0

如果不是要識別前端中的行,爲什麼不使用當前表的主鍵?

+0

因爲主鍵不表示位置。 – Khelben 2010-02-10 10:34:51