【发布时间】:2018-01-31 10:57:51
【问题描述】:
我有一个ndb模型如下:
class SomeModel(ndb.Model):
name = ndb.StringProperty(default="")
valid = ndb.BooleanProperty(default=False)
def some_function():
print "fired"
当 name 属性从以前的值更改时,我希望触发 some_function() 函数。
例如
$ q = SomeModel.query().get()
$ print p.name
John
$ q.name = "Sam"
$ q.put()
"fired"
但是,如果有效属性从False 更改为True,我不希望some_function() 触发。
例如
$ q = SomeModel.query().get()
$ print p.name
Sam
$ print p.valid
False
$ q.valid = True
$ q.put()
使用_post_put_hook 或_pre_put_hook 是否可以访问属性的先前值,以便我可以选择触发或不触发外部函数?
【问题讨论】:
-
我认为不运行另一个查询是不可能的。而且,由于您已经在模型之外完成了查询,因此使用它会更便宜:
if q.name != new_name: ...
标签: python-2.7 google-app-engine app-engine-ndb