Appengine 对象没有属性“_projection”

Appengine object has no attribute '_projection'

我用这个

class Ad(db.Model): #change to ndb.model 
    ndb_usr = ndb.KeyProperty()

但是当我尝试这个时 if ad.ndb_usr: 我得到了错误。为什么?

您似乎忘记实际应用评论中提到的更改:#change to ndb.model

因此您试图在 db.Model 对象中引用 ndb.KeyProperty() 属性(这很可能是特定于 ndb.Model 对象的)。由于 2 个 classes 非常相似,但不完全相同,因此一个 class 中的某些代码很可能不会立即失败并取得相当大的进展(在可能难以预测的路径上)从另一个 class 调用实例。

我尝试使用我现有的代码进行回购(仅将模型从 ndb.Model 更改为 db.Model)并且我遇到了类似的错误,但不完全相同(好吧,不同的代码):

AttributeError: type object 'ApartCILabel' has no attribute 'query'

AttributeError: type object 'ApartCILabel' has no attribute '_get_kind'

例如,最后一个很容易解释 - ndb.Model 有一个 _get_kind 方法,db.Model 没有。来自 NDB Cheat Sheet:

class MyModel(db.Model):             class MyModel(ndb.Model):

@classmethod                         @classmethod
def kind(cls):                       def _get_kind(cls): 
    return 'Foo'                         return 'Foo'

更新:

我看到 DB to NDB Client Library Migration 迁移指南应运而生,很可能是比 above-mentioned(较旧的)作弊 sheet.

更好的参考