【发布时间】:2012-08-06 05:17:05
【问题描述】:
我有电影数据存储,那里的每条记录都有自己的 id 作为键名,如下所示:
12345
32453
12154
78873
34543
我想允许用户一部一部地浏览电影。首先,应该显示最新的电影(数据库有字段added 带有日期和时间)。如何从数据存储中获取它?
更新。我可以这样做:
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)。当然,如果放映了上一部电影,就没有下一部电影了;如果播放第一部电影,则不会有上一部电影。那么,问题是如何获取下一部电影和上一部电影的关键名称?
更新。如果当前放映的电影是 12154,那么我应该为上一部电影生成类似 example.com/movie/32453 的链接,为下一部电影生成类似 example.com/movie/78873 的链接。
更新。我尝试过类似以下的方法:
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 order):
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,低级访问,未定?
-
从他使用 Python NDB 的标签来看。
-
@user1258245,是的,我使用 NDB。
标签: google-app-engine google-cloud-datastore app-engine-ndb