always store docs in cascade_refs
This commit is contained in:
parent
9b7fe9ac31
commit
56a2e07dc2
@ -363,9 +363,6 @@ class BaseQuerySet(object):
|
|||||||
queryset = self.clone()
|
queryset = self.clone()
|
||||||
doc = queryset._document
|
doc = queryset._document
|
||||||
|
|
||||||
if cascade_refs and doc in cascade_refs:
|
|
||||||
return 0
|
|
||||||
|
|
||||||
if write_concern is None:
|
if write_concern is None:
|
||||||
write_concern = {}
|
write_concern = {}
|
||||||
|
|
||||||
@ -405,12 +402,12 @@ class BaseQuerySet(object):
|
|||||||
continue
|
continue
|
||||||
rule = doc._meta['delete_rules'][rule_entry]
|
rule = doc._meta['delete_rules'][rule_entry]
|
||||||
if rule == CASCADE:
|
if rule == CASCADE:
|
||||||
ref_q = document_cls.objects(**{field_name + '__in': self})
|
cascade_refs = set() if cascade_refs is None else cascade_refs
|
||||||
|
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()
|
ref_q_count = ref_q.count()
|
||||||
if ref_q_count > 0:
|
if ref_q_count > 0:
|
||||||
cascade_refs = set() if cascade_refs is None else cascade_refs
|
|
||||||
if doc != document_cls:
|
|
||||||
cascade_refs.add(doc)
|
|
||||||
ref_q.delete(write_concern=write_concern, cascade_refs=cascade_refs)
|
ref_q.delete(write_concern=write_concern, cascade_refs=cascade_refs)
|
||||||
elif rule == NULLIFY:
|
elif rule == NULLIFY:
|
||||||
document_cls.objects(**{field_name + '__in': self}).update(
|
document_cls.objects(**{field_name + '__in': self}).update(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user