2015-11-27 102 views
0

我在倒置查詢時遇到OFFSET問題。我使用Django 1.8和Python 2.7。 的代碼的以下兩行 OFFSET 1。然而兩者反向查詢將OFFSET任何大於1Django反向查詢OFFSET 1

Article.objects.all().order_by('-id')[:2:1] 
Article.objects.all().order_by('id').reverse()[:2:1] 

在方括號中的第二個數字是OFFSET時,第一是極限。如果我在OFFSET中放置2,則查詢偏移量爲2,但是當我在OFFSET中放置1時,查詢偏移量爲0. 如何將OFFSET除以1?在Django框架中有bug嗎?

+0

我想也許在列表複製查詢行,然後訪問該行從列表中的元素,但它會是一種生氣。 – FinkAvenue

回答

1

您誤解了片語法。這與列表完全一樣。這是第一個參數是開始,但您完全省略了該參數;您只提供了第二個(結束)和第三個(步驟)值。

你的代碼應該是:

Article.objects.all().order_by('-id')[1:2] 

或只是

Article.objects.all().order_by('-id')[1] 
+0

您的第一行不會反轉,我想要DESC命令。你的跳躍最早,然後是最新的。我想要最新更舊。第二行向我拋出一個錯誤'Article'對象不可迭代' – FinkAvenue

+0

是的,它使用order_by -id。你可以使用'reverse()'來代替它,但它完全一樣。第二個返回單個文章而不是查詢集;因爲你只想要一個我不知道爲什麼你想迭代。 –

+0

如果我有3個數據庫條目1 2和3 1是最舊的和3最新的。你的第一行返回2和3.我希望它返回2和1. – FinkAvenue