我使用GAE和NDB进行项目。我只是注意到,如果我创建了几个对象,然后我检索这些对象的列表,则不保留顺序(我在对象上使用fetch()
)。
这是管理页面的屏幕截图,显示了同样的问题:
因为可能(如果它太小here是链接),请参阅我的几个sessions
。现在,我按顺序创建名称为day
的会话,从0到7。
但正如您所见,订单未被保留。
我查了一下,实际上keys
不是增量的。 id
(id
都不应该是增量的,不应该是增量的吗?但无论如何,在某些类中,不是这一类,我使用了手工制作的密钥,因此没有id
)。
有没有办法保存广告订单? (或者这只是一种奇怪的行为?或者这是我的坏事?)
答案 0 :(得分:3)
在keys
中,id
和ndb
都不是严格的增量(并且是一个增量)。您可以设置自己的id
并确保它们正确自动增量。
或者您可以将DateTimeProperty
:
created = ndb.DateTimeProperty(auto_now_add=True)
在您的视图中,您可以使用过滤器按插入日期对实体进行排序,例如:
posts = Post.query().order(-Post.created).fetch()
将按插入日期的降序排序并获取您的(假设)Post
实体。
答案 1 :(得分:0)
除非您执行以特定顺序检索的查询,否则不会预期订单会被保留。
是什么让你觉得应该订购?