0

我正在尝试从 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 时,我得到一个“No implementation for kind Foo”异常。问题行如下所示: foo = bar.foo_reference.get()

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

4

1 回答 1

0

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

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

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

于 2013-05-27T23:18:26.240 回答