我需要检索添加到集合中的最新项目。这是我的做法:
class Box(db.Model):
ID = db.IntegerProperty()
class Item(db.Model):
box = db.ReferenceProperty(Action, collection_name='items')
date = db.DateTimeProperty(auto_now_add=True)
#get most recent item
lastItem = box.items.order('-date')[0]
这是一种昂贵的方法吗?有更好的办法吗?
最佳答案
如果你要迭代一个框列表,这是一个非常糟糕的方法。您将为每个框运行额外的查询。您可以通过 Appstats 轻松查看发生了什么情况.
如果您按照请求执行其中一项操作,则可能没问题。不过这是不理想的。您可能还想使用:lastItem = box.items.order('-date').get()
。 get只会将第一个结果返回给应用程序。
如果可能的话,将 lastItem
属性添加到 Box
或存储 Box ID
(您的属性)在 Item
上。换句话说,对数据进行非规范化。如果您要获取 Box 列表及其最新项目,您需要使用这种类型的方法。
关于python - 获取最新数据项 - Google App Engine - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3981997/