我在更新一些搜索索引的 ndb 模型上设置了一个 _post_put_hook。这简化了数据导入和原子更新。但是我有一种情况,我想在不触发索引操作的情况下更新该模型的某些属性。
所以我正在寻找:
- 可以与 _post_put_hook 一起使用的某种标志,或者:
- 一种了解该 put() 上哪些模型属性/值已更改的方法,因此我可以添加条件来更新索引或不更新索引。
谢谢!
我在更新一些搜索索引的 ndb 模型上设置了一个 _post_put_hook。这简化了数据导入和原子更新。但是我有一种情况,我想在不触发索引操作的情况下更新该模型的某些属性。
所以我正在寻找:
谢谢!
一种方法是设置一个不是 ndb.Property(即 volatile)的实体属性,当您想避免调用 _post_put_hook 中的逻辑时,您明确设置了该属性。
例如
从我的 zope days 属性中,这些属性不会保存在命名的地方_v_somename
如此明确setattr(self,_v_no_hook,True)
- 显然是在一个方法中做到这一点;-)
然后只需检查您的标志_post_put_hook
if not getattr(self,'_v_no_hook`,False):
# do something.not
您可以使用 post put 钩子来做到这一点,因为它们是方法,而不是大多数其他钩子的类方法。