【问题标题】:Google App Engine - ReferenceProperty() gives error - Generic reference - PolymodelGoogle App Engine - ReferenceProperty() 给出错误 - 通用参考 - Polymodel
【发布时间】: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


【解决方案1】:

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

带有Referer的文件需要import Base

也许其他人会遇到这个怪癖,所以我会留下这个问题。

【讨论】:

    猜你喜欢
    • 2011-02-04
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    相关资源
    最近更新 更多