Google App Engine:KindError - 没有针对'ObjectName'的实现

Pet*_*oip 4 google-app-engine model

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

class Cheese(db.Model):
   name = db.StringProperty()
   def say_cheese(self):
      return name + "cheese"
Run Code Online (Sandbox Code Playgroud)

出于某种原因,每当我跑:

cheese = Cheese(name = "smelly")
print thing.say_cheese()
Run Code Online (Sandbox Code Playgroud)

我得到一个KindError - 没有实现类型'奶酪'.我想说:"臭奶酪"

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

Dav*_*ill 10

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

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

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