没有针对Kind Exception Python Google App Engine的实现

时间:2013-05-27 22:43:17

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

我正在尝试从db Expando访问ndb PolyModel子类的引用属性 子类。我的两个班级看起来像这样:

class Foo(polymodel.PolyModel):
    ...

class Bar(db.Expando):
    ...
    foo_reference = db.ReferecnceProperty(None, collection_name='foos')
    ...

这两个定义在不同的文件中。 我按照以下方式分配参考:

...
foo = Foo.query.get()
bar.foo_reference = ndb.Key.to_old_key(foo.key)
...

我这样做没有问题。我可以在应用程序引擎仪表板中看到存储在数据库中的条目,但是当我尝试访问foo_reference时,我得到了“没有实现类型Foo”异常。问题行看起来像这样:     foo = bar.foo_reference.get()

我已经检查了所有我的导入,并且实际上可以创建一个Foo实体,我尝试访问该实体。 引用ndb的db引用属性是否有一些限制? 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您的Bar和Foo类需要导入。在导入它们之前,检索实体和重新创建模型实例的基础机制无法找到类。 导入它们会创建类到实体的注册表。

可能是查询处理程序的路径,而不是导入模型。

进一步看看你的代码,你也混合了db和ndb,加上你有很多错字,如果你使用db进行模型定义而不是nbd,为什么还要使用ndb.Key.to_old_key,或者是另一个错字。