From 8060179f6de35791e6218e861b03202b1e60f498 Mon Sep 17 00:00:00 2001 From: Meir Kriheli Date: Thu, 7 Jun 2012 12:16:00 +0300 Subject: [PATCH] Implement PULL reverse_delete_rule --- mongoengine/queryset.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mongoengine/queryset.py b/mongoengine/queryset.py index 1fb3eda7..c943dc4d 100644 --- a/mongoengine/queryset.py +++ b/mongoengine/queryset.py @@ -10,7 +10,7 @@ from bson.code import Code from mongoengine import signals __all__ = ['queryset_manager', 'Q', 'InvalidQueryError', - 'DO_NOTHING', 'NULLIFY', 'CASCADE', 'DENY'] + 'DO_NOTHING', 'NULLIFY', 'CASCADE', 'DENY', 'PULL'] # The maximum number of items to display in a QuerySet.__repr__ @@ -21,6 +21,7 @@ DO_NOTHING = 0 NULLIFY = 1 CASCADE = 2 DENY = 3 +PULL = 4 class DoesNotExist(Exception): @@ -1319,6 +1320,10 @@ class QuerySet(object): document_cls.objects(**{field_name + '__in': self}).update( safe_update=safe, **{'unset__%s' % field_name: 1}) + elif rule == PULL: + document_cls.objects(**{field_name + '__in': self}).update( + safe_update=safe, + **{'pull_all__%s' % field_name: self}) self._collection.remove(self._query, safe=safe)