有选择地触发模型 _post_put_hook
Selectively triggering a model _post_put_hook
我已经在更新一些搜索索引的 ndb 模型上设置了 _post_put_hook。这简化了数据导入和原子更新。
但我有一种情况,我想在不触发索引操作的情况下更新该模型的某些属性。
所以我正在寻找:
- 某种可以与 _post_put_hook 一起使用的标志,或者:
- 一种了解哪个模型 properties/values 在 put() 上发生变化的方法,因此我可以添加一个条件是否更新索引。
谢谢!
一种方法是设置一个实体 属性,它不是 ndb.Property(即可变的),当您想避免调用 _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 钩子来完成此操作,因为它们是方法,而不是 class 方法,大多数其他钩子都是。
我已经在更新一些搜索索引的 ndb 模型上设置了 _post_put_hook。这简化了数据导入和原子更新。 但我有一种情况,我想在不触发索引操作的情况下更新该模型的某些属性。
所以我正在寻找:
- 某种可以与 _post_put_hook 一起使用的标志,或者:
- 一种了解哪个模型 properties/values 在 put() 上发生变化的方法,因此我可以添加一个条件是否更新索引。
谢谢!
一种方法是设置一个实体 属性,它不是 ndb.Property(即可变的),当您想避免调用 _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 钩子来完成此操作,因为它们是方法,而不是 class 方法,大多数其他钩子都是。