【问题标题】:Any way to tell if _pre_put_hook in ndb is saving for the first time?有什么方法可以判断 ndb 中的 _pre_put_hook 是否是第一次保存?
【发布时间】:2013-05-16 20:49:27
【问题描述】:

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

【问题讨论】:

    标签: python google-app-engine app-engine-ndb


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您需要检查 _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'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-30
        • 2014-04-18
        • 1970-01-01
        • 2023-03-11
        • 2011-02-03
        • 2017-04-27
        • 2019-10-20
        相关资源
        最近更新 更多