Appengine对象没有属性'_projection'

时间:2018-04-01 18:45:31

标签: app-engine-ndb google-app-engine-python

我用这个

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

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

1 个答案:

答案 0 :(得分:1)

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

因此,您尝试在ndb.KeyProperty()对象中引用ndb.Model属性(最有可能是db.Model对象)。由于这两个类非常相似,但不完全相同,因此从一个类中的某些代码很可能不会立即失败并在从实例上调用实例时进行一些进展(可能很难预测路径)其他课程。

我尝试使用现有代码进行回购(仅将模型从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迁移指南的出现,很可能是比上述(旧版)备忘单更好的参考。