Google App Engine - ReferenceProperty()错误 - 泛型引用 - 多模型

0 投票
1 回答
673 浏览
提问于 2025-04-15 14:37

在Google App Engine中,有一个叫做Polymodel的东西,像这样:

from google.appengine.ext import db
from google.appengine.ext.db import polymodel

class Base(polymodel.PolyModel):
  def add_to_referer(self):
     Referer(target=self).put()

class Referer(db.Model):
  target = db.ReferenceProperty()

  @classmethod    
  def who_referred(cls):
     for referer in Referer.all():
         obj = referer.target

最后一行出现了一个错误,像这样:

No implementation for kind 'Base'

错误追踪信息是这样的:

>>> object = referer.target
/usr/local/google_appengine/google/appengine/ext/db/__init__.py in __get__:2804
/usr/local/google_appengine/google/appengine/ext/db/__init__.py in get:1179
/usr/local/google_appengine/google/appengine/ext/db/__init__.py in class_for_kind:220

有没有人知道这里发生了什么?我本来希望的是,当然不会抛出任何错误。

可能有一点关系的是,Base和Referer在不同的文件中(而且没有被导入)。

这个问题可能和Python装饰类以改变父对象类型有关,这个问题一直在我脑海中萦绕。

谢谢你的阅读。

1 个回答

0

啊。我在发帖后立刻就回答了这个问题:

需要在有Referer的文件里导入Base

也许其他人也会遇到这个小问题,所以我就把这个问题留着吧。

撰写回答