Adding check if cascade delete is self-referencing. If so, prevent
recursing if there are no objects to evaluate
This commit is contained in:
parent
5bb63f645b
commit
2d9b581f34
@ -1314,7 +1314,9 @@ class QuerySet(object):
|
|||||||
document_cls, field_name = rule_entry
|
document_cls, field_name = rule_entry
|
||||||
rule = doc._meta['delete_rules'][rule_entry]
|
rule = doc._meta['delete_rules'][rule_entry]
|
||||||
if rule == CASCADE:
|
if rule == CASCADE:
|
||||||
document_cls.objects(**{field_name + '__in': self}).delete(safe=safe)
|
ref_q = document_cls.objects(**{field_name + '__in': self})
|
||||||
|
if doc != document_cls or (doc == document_cls and ref_q.count() > 0):
|
||||||
|
ref_q.delete(safe=safe)
|
||||||
elif rule == NULLIFY:
|
elif rule == NULLIFY:
|
||||||
document_cls.objects(**{field_name + '__in': self}).update(
|
document_cls.objects(**{field_name + '__in': self}).update(
|
||||||
safe_update=safe,
|
safe_update=safe,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user