2012-03-07 3 views
-1

Я использую NDB в проекте Appengine. Я использую _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

Вам нужно будет найти механизм для передачи информации с крюка предварительного удаления на крюк после удаления. Вероятно, какой-то глобальный указатель, индексированный ключом, может работать (обязательно удалите ключ в методе post-delete). –

+0

Не может быть удаленной сущностью параметр в крючке, как сигналы модели Django? Im думает прямо сейчас, что, если я хотел бы знать, сохраняется ли какой-либо объект в первый раз или просто обновляется, я должен сделать какую-то игру как с pre_put, так и с post_put. Было бы здорово создать созданный параметр в post_put_hook. Как и Django. – francofuji

Смежные вопросы