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.
更好的参考
我用这个
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.
更好的参考