如何从模型内部设置Model属性的值(datastore ndb.Model)?
class Note(ndb.Model):
content = ndb.StringProperty()
date = ndb.DateTimeProperty(auto_now_add=True)
depth = ndb.IntegerProperty()
def _calculate_depth(self):
self.depth = len(self.key.parent().pairs())
note = Note( parent=ndb.Key('Note', 'main', 'Todo', 'task1') , content='whatever')
note.put()
我正在寻找的是当运行创建新笔记calculate_depth方法时,它设置了深度属性的值
解决方案:)
class Note(ndb.Model):
content = ndb.StringProperty()
date = ndb.DateTimeProperty(auto_now_add=True)
depth = ndb.ComputedProperty(lambda self: len(self.key.parent().pairs()))
note = Note( parent=ndb.Key('Note', 'main', 'Todo', 'task1') , content='whatever')
note.put()
答案 0 :(得分:0)
对不起这件事。
您要找的是帖子PUT hooks.
我在你的函数_calculate_depth
看到你使用了实体键的值。然后,不仅需要创建实体,还需要在ndb中写入以键入密钥。
如果您希望“自动”发生,那么Model__post_put_hook就是您所需要的