我有電影數據存儲,每個記錄有都有自己的ID爲重點的名字象下面這樣:如何從數據存儲獲取最新和相鄰的記錄?
12345
32453
12154
78873
34543
我想允許用戶通過一個瀏覽的電影之一。首先,應該顯示最新的電影(數據庫具有日期和時間的字段added
)。如何從數據存儲中獲取? Upd。我能做到象下面這樣:
movies = Movies.query()
movies.order(-Movies.added)
for movie in movies.fetch(1):
self.response.out.write(movie.key.id())
但我不喜歡它 - 爲了拿到鑰匙我請求整個記錄。其次,如果顯示一些其他電影(例如,12154),用戶應該能夠轉到先前的電影(id 32453)和下一個電影(id 78873)。當然,如果顯示上一部電影,則不會有下一部電影;如果顯示第一部電影,則不會有先前的電影。所以,問題是如何獲得下一個和以前的電影的關鍵名稱? Upd。如果當前顯示的電影是12154,那麼我應該爲前一部電影創建鏈接,如example.com/movie/32453
,爲下一部電影創建鏈接example.com/movie/78873
。
Upd。我已經試過類似如下:
next_movie = Movies.query(Movies.added < movie.added)
next_movie = next_movie.order(-Movies.added)
next_movie = next_movie.get()
if next_movie:
next_url = next_movie.key.id()
else:
next_url = ''
prev_movie = Movies.query(Movies.added > movie.added)
prev_movie = prev_movie.order(-Movies.added)
prev_movie = prev_movie.get()
if prev_movie:
prev_url = prev_movie.key.id()
else:
prev_url = ''
但它不能很好地工作... next_url
似乎是美好的,但prev_url
總是相同的。這裏是我的測試數據庫內容(-Movies.added
順序):
id added
503035: 2012-08-05 19:49:51.259000
475537: 2012-08-05 19:49:51.238000
677539: 2012-08-05 19:49:51.218000
566355: 2012-08-05 19:49:51.197000
557850: 2012-08-05 19:49:51.176000
670146: 2012-08-05 19:49:51.155000
581030: 2012-08-05 19:49:51.135000
464561: 2012-08-05 19:49:51.114000
507817: 2012-08-05 19:49:51.092000
你應該更具體一點與你的問題。你在使用JDO,Objectify,DataNucleaus,低級訪問,未定的東西? – user1258245 2012-08-06 05:25:18
從他使用Python NDB的標籤判斷。 – 2012-08-06 06:21:18
@ user1258245,是的,我使用NDB。 – 2012-08-06 15:01:15