【发布时间】:2009-09-26 23:47:53
【问题描述】:
在 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'
Traceback 是这样的:
>>> 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有些关系,这个问题一直潜伏在我的脑海里。
感谢您的阅读。
【问题讨论】:
-
我回答了另一个“仍然潜伏”的问题,但没有看到您对我的回答做出任何反应,既不是正面的也不是负面的——只是将答案扩展到涵盖具有自定义元类的类(如 Django 和 GAE 模型是),但没有 cmets 的回复我真的不知道它是否或为什么它没有帮助你!-)
标签: python google-app-engine referenceproperty