Google App Engine - ReferenceProperty()提供错误 - 通用引用 - 多模型

时间:2009-09-26 23:47:53

标签: python google-app-engine referenceproperty

鉴于Google App Engine中的多模型,喜欢:

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 decorate a class to change parent object type有些相关,这是一个仍然潜藏在我脑海中的问题。

感谢您的阅读。

1 个答案:

答案 0 :(得分:0)

阿。我发布后立即回答了这个问题:

带有Referer的文件需要导入Base

也许其他人会在这个怪癖上发生,所以我会把这个问题留下来。