我用这个
class Ad(db.Model): #change to ndb.model
ndb_usr = ndb.KeyProperty()
但是当我尝试这个if ad.ndb_usr:
时,我会得到错误。为什么?
发布于 2018-04-02 04:42:35
您似乎忘了实际应用注释:#change to ndb.model
中提到的更改。
因此,您试图在ndb.KeyProperty()
对象中引用ndb.Model
属性(很可能是特定于ndb.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
没有。
class MyModel(db.Model): class MyModel(ndb.Model):
@classmethod @classmethod
def kind(cls): def _get_kind(cls):
return 'Foo' return 'Foo'
更新:
我看到数据库到NDB客户端库迁移迁移指南已经存在,很可能是比上面提到的(旧的)备忘单更好的参考。
https://stackoverflow.com/questions/49601466
复制相似问题