【问题标题】:google app engine python get_by_id does not function谷歌应用引擎 python get_by_id 不起作用
【发布时间】:2012-04-24 21:48:42
【问题描述】:

第一次发帖,是谷歌应用引擎的新手!

我一生都无法弄清楚为什么我尝试使用 Model.get_by_id 访问对象不起作用。

我的测试数据已填充,我可以验证输出是否符合注释。我可以在 Datastore 查看器中确认数据的 ID...但尝试使用该 ID 无法返回对象。

namespace_manager.set_namespace('myNamespace') 对于模型中的 t.MyClass.all().fetch(100): print t.key().id() # 打印密钥并在数据存储查看器中验证 print t.date # 打印日期 myClassInstance = models.MyClass.get_by_id(t.key().id()) # 永远找不到对象 如果游览是无: 打印“未找到 MyClass 实例”

所以输出是

6 2012-04-24 20:47:13.537000 未找到 MyClass 实例 27 2012-04-24 20:47:13.605000 未找到 MyClass 实例 29 2012-04-24 20:47:13.611000 未找到 MyClass 实例 31 2012-04-24 20:47:13.617000 未找到 MyClass 实例

请注意,这不是根实体,也有子实体...但是 MyClass.get_by_id 方法不应该返回正确的对象吗?

提前致谢!

【问题讨论】:

    标签: python google-app-engine


    【解决方案1】:

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

    entity = MyModel(parent = parentkey,
                     name   = 'somename')
    entity.put()
    
    entity_by_id = MyModel.get_by_id(entity.key().id(), parent = parentkey)
    

    【讨论】:

    • 如果它在层次结构中向下几层怎么办?我得到的印象是整个祖先的东西都严格用于实体分组,因为似乎有很多实体存储其父键的示例。我正在使用命名空间来拆分数据,所以我还不如放弃祖先的东西,只存储键或引用属性?
    • 即使该父级下的层仍将是该实体组中实体的父级。
    猜你喜欢
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 2014-07-20
    • 2011-08-21
    相关资源
    最近更新 更多