在_post_put_hook中插入另一个模型实体的正确方法?

时间:2015-07-30 13:13:40

标签: python google-app-engine

我想知道我是否可以在_post_put_hook()内部进行事务性插入操作,或者在put()内的任何操作之前如何处理_post_put_hook()错误。

我在Python中使用Google App Engine。我的代码是这样的,

class Event(ndb.Model):
  ...
  def _post_put_hook(self, future):
    Device.get_or_insert(self.device_id, device_name=self.device_name, ...)
  ...

尽管get_or_insert()是事务性的,但我不确定新的Device实体是否具有来自事件put()的正确数据

1 个答案:

答案 0 :(得分:1)

这正是传递给钩子的Future参数的用途。您可以调用它的check_success()方法来确保put()操作成功。

class Event(ndb.Model):

  def _post_put_hook(self, future):
    if not future or future.check_success() is None:
      Device.get_or_insert(self.device_id, device_name=self.device_name, ...)

您可以在official docs中了解有关Future类的更多信息。