简体   繁体   English

Google App Engine-ReferenceProperty()给出错误-通用参考-Polymodel

[英]Google App Engine - ReferenceProperty() gives error - Generic reference - Polymodel

Given a Polymodel in Google App Engine, likeso: 给定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

This last line is giving an error likeso: 最后一行给出了这样的错误:

No implementation for kind 'Base'

Traceback is likeso: 回溯就像这样:

>>> 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

Does anyone have any idea what's going on here? 有人知道这里发生了什么吗? The expected behavior would be, obviously, that no error be thrown. 显然,预期的行为是不会引发任何错误。

It may be relevant that Base and Referer are in separate files (and not imported). 将Base和Referer放在单独的文件中(而不是导入)可能是相关的。

This problem may be somewhat related to Python decorate a class to change parent object type , which is a question which still lurks in the back of my mind. 这个问题可能与Python装饰类以更改父对象类型有关 ,这个问题仍然潜藏在我的脑海中。

Thank you for reading. 感谢您的阅读。

Ah. 啊。 I answered this immediately after I posted: 发布后,我立即回答了这个问题:

The file with Referer needs to import Base . 具有Referer的文件需要导入Base

Perhaps someone else will happen upon this quirk, so I'll leave this question open. 也许其他人也会在这个古怪的事情上发生,所以我将这个问题保留为开放状态。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM