我用这个
class Ad(db.Model): #change to ndb.model
ndb_usr = ndb.KeyProperty()
但是当我尝试这个if ad.ndb_usr:
时,我得到了错误。为什么呢?
答案 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迁移指南的出现,很可能是比上述(旧版)备忘单更好的参考。