Fix cascade delete mixing among collections

This commit is contained in:
Emmanuel Leblond
2016-01-30 11:58:37 +01:00
parent 2659ec5887
commit a643933d16
3 changed files with 61 additions and 2 deletions

View File

@@ -403,8 +403,10 @@ class BaseQuerySet(object):
rule = doc._meta['delete_rules'][rule_entry]
if rule == CASCADE:
cascade_refs = set() if cascade_refs is None else cascade_refs
for ref in queryset:
cascade_refs.add(ref.id)
# Handle recursive reference
if doc._collection == document_cls._collection:
for ref in queryset:
cascade_refs.add(ref.id)
ref_q = document_cls.objects(**{field_name + '__in': self, 'id__nin': cascade_refs})
ref_q_count = ref_q.count()
if ref_q_count > 0: