2012-03-07 19 views
-1

AppengineプロジェクトでNDBを使用しています。私はいくつかのエンティティが削除された後いくつかの操作を行うために_post_delete_hookを使用しています。この方法で私は鍵を持っています。しかし、key.get()を実行するとエラーが発生します。 ここにいくつかのコード例があります。Appengine NDBの削除されたエンティティへのアクセス

[friends/models.py] 

from ndb import models 
from users.models import User 

class FriendShip(models.Model): 
    user = models.KeyProperty(kind=User) 
    friend = models.KeyProperty(kind=User) 

    @classmethod 
    def _post_delete_hook(cls, key, future): 
     signals.post_delete.send(cls, instance=key) 

[some-other-filer.py] 

# connected method to post_detele_hook 
def ended_friendship(sender, **kwargs): 
    key = kwargs.get('instance', None) 
    if key: 
     user = key.get().user # raise a non existing entity error 

ヘルプがありますか?

これはフックについての文書です。 http://code.google.com/appengine/docs/python/ndb/entities.html#hooks

+0

削除されていれば、それ以上取得することはできません。なぜあなたはできると思いますか? – geoffspear

+0

。削除されるともうアクセスできなくなります。 – aschmid00

答えて

2

(あなたのメソッドでエンティティにアクセスしたい)場合は、_pre_delete_hookが理にかなっているかもしれません。 http://code.google.com/appengine/docs/python/ndb/modelclass.html#Model__pre_delete_hookを参照してください。

+0

お返事ありがとうございます。しかし、pre_hookで正常に削除操作を許可していますか?私の場合、削除されたエンティティに関連するエンティティを所有するいくつかの合計カウントを減らすpost_delete_hookが必要です。 – francofuji

+0

pre-deleteフックからpost-deleteフックに情報を渡す仕組みを見つけなければなりません。おそらくキーで索引付けされた何らかの種類のグローバル辞書が機能するかもしれません(ポスト削除フックのキーを削除してください)。 –

+0

削除されたエンティティ、Djangoモデル信号のようなフック内のパラメータではありませんか?私がいくつかのエンティティが最初に保存されているのか、更新したのかを知りたいのであれば、pre_putフックとpost_putフックの両方で何らかのゲームを作ってください。 post_put_hookに作成されたパラメータを持つことは素晴らしいことです。 Djangoのように。 – francofuji

関連する問題