Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 覆盖保存、放置、获取等。。。googleappengine中的方法_Google App Engine_Overriding - Fatal编程技术网

Google app engine 覆盖保存、放置、获取等。。。googleappengine中的方法

Google app engine 覆盖保存、放置、获取等。。。googleappengine中的方法,google-app-engine,overriding,Google App Engine,Overriding,是否可以在Google应用程序引擎中覆盖db.Model的methids? 我想声明beforeSave、afterSave方法等。。创建自动标签系统 我知道有钩子,但在我看来,解决这个问题的方法是错误的:) 谢谢 是的,可以覆盖这些方法。看看这个。钩子模型类看起来是这样的: class HookedModel(db.Model): def before_put(self): pass def after_put(self): pass def put(self,

是否可以在Google应用程序引擎中覆盖db.Model的methids? 我想声明beforeSave、afterSave方法等。。创建自动标签系统

我知道有钩子,但在我看来,解决这个问题的方法是错误的:)


谢谢

是的,可以覆盖这些方法。看看这个。钩子模型类看起来是这样的:

class HookedModel(db.Model):
  def before_put(self):
    pass

  def after_put(self):
    pass

  def put(self, **kwargs):
    self.before_put()
    super(HookedModel, self).put(**kwargs)
    self.after_put()
阅读博客,了解如何处理
db.put()
方法


您可能还对感兴趣。

我发布了对jbochi的HookedModel类的扩展,以便在从
db.put()
\u async
函数族调用时,可以正确调用put之前的
和put之后的
方法


参见

我试图通过@jbochi改进答案:

  • 根据,
    put()
    应该返回一个
    ,因此应该传递库中的返回值
  • db.Model.save()
    ,虽然不推荐使用,但(a)有时仍然使用,(b)是
    put()
    的同义词,(c)显然不是由
    put()
    直接调用的,因此应该手动处理
  • 修订守则:

    class HookedModel(db.Model):
      def before_put(self):
        pass
    
      def after_put(self):
        pass
    
      def put(self, **kwargs):
        self.before_put()
        result = super(HookedModel, self).put(**kwargs)
        self.after_put()
        return result
    
      def save(self, **kwargs):
        self.before_put()
        result = super(HookedModel, self).save(**kwargs)
        self.after_put()
        return result
    

    如果您希望使用monkeypatching,或者Chris Farmiloe关于使用异步方法的回答,您仍然应该阅读。

    我确实需要更快地进入。)put()应该返回一个键-我已提交了对此答案的编辑以添加该键。@wodow,您不能编辑其他人的代码来添加您自己的代码,尤其是如果它是可接受的答案。如果你真的觉得你有什么要补充的,那么要么添加你自己的答案,要么让答案作者调整他们的代码。我已经回滚了您的编辑。@Sheridan,好的,对不起!(不是维基)