我正在谷歌应用引擎中编写一个 db.Model 类,它看起来像这样:

class Cheese(db.Model):
   name = db.StringProperty()
   def say_cheese(self):
      return name + "cheese"

出于某种原因,每当我运行:
cheese = Cheese(name = "smelly")
print thing.say_cheese()

我得到一个 KindError - 没有实现 kind 'Cheese'。我想让它说:“臭奶酪”

难道我做错了什么?我不允许向 db.Model 对象添加方法吗?

最佳答案

听起来 thing 实际上是从 db.ReferenceProperty() 字段(在非 Cheese 实体上)加载的,该字段恰好是指 Cheese 实体。如果您在没有首先导入 Cheese 模型的情况下访问这样的属性,那么代码将无法找到 Cheese 类型来构造实体,并且会因您指示的错误而失败。

无论如何,尝试在导致错误的代码中导入 Cheese 模型。然后代码应该能够在需要时找到 Cheese 的实现。

回答问题的另一部分:是的,您当然可以将自己的方法添加到 db.Model 子类中。

关于google-app-engine - 谷歌应用引擎 : KindError - No implementation for kind 'ObjectName' ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3232289/

10-10 03:03