0

我在更新一些搜索索引的 ndb 模型上设置了一个 _post_put_hook。这简化了数据导入和原子更新。但是我有一种情况,我想在不触发索引操作的情况下更新该模型的某些属性。

所以我正在寻找:

  1. 可以与 _post_put_hook 一起使用的某种标志,或者:
  2. 一种了解该 put() 上哪些模型属性/值已更改的方法,因此我可以添加条件来更新索引或不更新索引。

谢谢!

4

1 回答 1

2

一种方法是设置一个不是 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 钩子来做到这一点,因为它们是方法,而不是大多数其他钩子的类方法。

于 2015-10-14T11:28:28.030 回答