Appengine:db.Model.get_by_id(id)不起作用

时间:2011-08-16 18:24:13

标签: google-app-engine google-cloud-datastore

我的数据存储区中有一些Ice-entity。 当我在admin-webInterface

上运行以下内容时
from google.appengine.ext import db

class Ice(db.Model):
    name = db.StringProperty()
    description = db.StringProperty(multiline=True)
    date = db.DateTimeProperty(auto_now_add=True)

for ice in Ice.all():
    print ice.key().id()
    print Ice.get_by_id(ice.key().id())

我总是得到:

4
None
5
None
6
None
7
None
8
None
9
None
10
None
11
None
12
None
13
None
14
None
15
None
16
None
17
None
18
None
19
None
20
None

为什么?

3 个答案:

答案 0 :(得分:1)

如果您的Ice实体是子实体,您会看到这种行为。 id字段不是全局唯一的 - 仅对给定种类和父级是唯一的。

答案 1 :(得分:-1)

您正在使用Ice.key()。您想要Model.get_by_key_name()吗?

答案 2 :(得分:-1)

我最近也遇到过get_by_id方法的问题。我使用的是SDK 1.7.6。问题是新的dev_appserver创建的数据存储区实体id值大于Javascript可以处理的值。我可以使用顺序ID在您的开发环境中修复。

使用此链接获取进一步说明Issue 1.7.6

当我搜索问题的解决方案时,我对所有关于失踪父母的反馈感到困惑。我没有失去父亲关系,仍然get_by_id没有工作!我希望这个答案可以为有同样问题的人节省一些时间......