4

我想在模型创建上运行一些东西,而不是在模型更新上。我可以通过添加一个属性来做到这一点,但我想知道是否有某种内置功能可以专门针对创建与更新。

4

2 回答 2

6

任何已存储的实体都有一个密钥,因此检查它会告诉您它是新的还是正在更新。

https://developers.google.com/appengine/docs/python/ndb/keyclass

于 2013-05-16T23:29:12.590 回答
5

您需要检查 _pre_put_hook 中模型键中是否存在 ID。

如果您查看 ndb Model 类的源代码,您可以看到在调用 _pre_put_hook 之前实际创建了一个键并将其分配给模型实例,但该键没有 ID。_pre_put_hook 中的这段代码应该可以工作:

def _pre_put_hook(self):
    if self.key.id() is None:
        print 'model has not been saved'
    else:
        print 'model has been saved'
于 2013-06-13T03:30:27.267 回答