【发布时间】:2016-01-12 06:31:39
【问题描述】:
我在 ndb 模型上设置了一个 _post_put_hook 来更新一些搜索索引。这简化了数据导入和原子更新。 但是我有一种情况,我想在不触发索引操作的情况下更新该模型的某些属性。
所以我正在寻找:
- 可以与 _post_put_hook 一起使用的某种标志,或者:
- 一种了解 put() 上哪些模型属性/值已更改的方法,因此我可以添加条件来更新索引。
谢谢!
【问题讨论】:
-
更难的部分是监视属性以查看它们是否已更改。因为
ndb.Model基类中没有内置这样的方法。数据存储在_values。 -
你可以,只是不能直接使用钩子,但它们会有所帮助。使用更高级别的 get to then 来制作属性的副本,同时创建它们的哈希值。在 _pre_put 然后比较哈希,如果不同,则查找更改,在我们的例子中,存储子实体中更改的审计跟踪以及谁做了这些。
标签: google-app-engine google-cloud-datastore app-engine-ndb google-app-engine-python