谷歌应用程序引擎python get_by_id不起作用

时间:2012-04-24 21:48:43

标签: python google-app-engine

第一次发布和新的谷歌应用引擎!

我不能为我的生活弄清楚为什么我使用Model.get_by_id访问对象的尝试不起作用。

我的测试数据已填充,我可以将输出验证为已注释。我可以在数据存储区查看器中确认数据的ID ...但尝试使用该ID无法返回该对象。

    namespace_manager.set_namespace('myNamespace')

    for t in models.MyClass.all().fetch(100):
        print t.key().id() # prints the key and verified in the Datastore Viewer
        print t.date # prints the date

        myClassInstance = models.MyClass.get_by_id(t.key().id()) # never finds the object
        if tour is None:
            print "MyClass instance not found"

所以输出是

    6
    2012-04-24 20:47:13.537000
    MyClass instance not found
    27
    2012-04-24 20:47:13.605000
    MyClass instance not found
    29
    2012-04-24 20:47:13.611000
    MyClass instance not found
    31
    2012-04-24 20:47:13.617000
    MyClass instance not found

请注意,这不是root实体并且还有子节点......但是MyClass.get_by_id方法不应该返回正确的对象吗?

提前感谢!

1 个答案:

答案 0 :(得分:3)

如果您使用父/祖先创建实体,则需要将其提供给get_by_id函数。

entity = MyModel(parent = parentkey,
                 name   = 'somename')
entity.put()

entity_by_id = MyModel.get_by_id(entity.key().id(), parent = parentkey)