Adding check if cascade delete is self-referencing. If so, prevent
recursing if there are no objects to evaluate
This commit is contained in:
		| @@ -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, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user