New in version 0.5.
Signal support is provided by the excellent blinker library and will gracefully fall back if it is not available.
The following document signals exist in MongoEngine and are pretty self explaintary:
- mongoengine.signals.pre_init
- mongoengine.signals.post_init
- mongoengine.signals.pre_save
- mongoengine.signals.post_save
- mongoengine.signals.pre_delete
- mongoengine.signals.post_delete
Example usage:
from mongoengine import *
from mongoengine import signals
class Author(Document):
name = StringField()
def __unicode__(self):
return self.name
@classmethod
def pre_save(cls, sender, document, **kwargs):
logging.debug("Pre Save: %s" % document.name)
@classmethod
def post_save(cls, sender, document, **kwargs):
logging.debug("Post Save: %s" % document.name)
if 'created' in kwargs:
if kwargs['created']:
logging.debug("Created")
else:
logging.debug("Updated")
signals.pre_save.connect(Author.pre_save, sender=Author)
signals.post_save.connect(Author.post_save, sender=Author)