@@ -351,10 +351,9 @@ def delete_quick(self, get_count=False):
351351 def _delete_cascade (self ):
352352 """service function to perform cascading deletes recursively."""
353353 max_attempts = 50
354- delete_count = 0
355354 for _ in range (max_attempts ):
356355 try :
357- delete_count + = self .delete_quick (get_count = True )
356+ delete_count = self .delete_quick (get_count = True )
358357 except IntegrityError as error :
359358 match = foreign_key_error_regexp .match (error .args [0 ]).groupdict ()
360359 if "`.`" not in match ['child' ]: # if schema name missing, use self
@@ -383,7 +382,7 @@ def _delete_cascade(self):
383382 match ['pk_attrs' ])))
384383 else :
385384 child &= self .proj ()
386- delete_count += child ._delete_cascade ()
385+ child ._delete_cascade ()
387386 else :
388387 print ("Deleting {count} rows from {table}" .format (
389388 count = delete_count , table = self .full_table_name ))
@@ -399,6 +398,7 @@ def delete(self, transaction=True, safemode=None):
399398 :param transaction: if True, use the entire delete becomes an atomic transaction.
400399 :param safemode: If True, prohibit nested transactions and prompt to confirm. Default
401400 is dj.config['safemode'].
401+ :return: number of deleted rows (excluding those from dependent tables)
402402 """
403403 safemode = config ['safemode' ] if safemode is None else safemode
404404
@@ -439,6 +439,7 @@ def delete(self, transaction=True, safemode=None):
439439 self .connection .cancel_transaction ()
440440 if safemode :
441441 print ('Deletes cancelled' )
442+ return delete_count
442443
443444 def drop_quick (self ):
444445 """
@@ -822,8 +823,11 @@ def __call__(self, event, skip_logging=None):
822823 logger .info ('could not log event in table ~log' )
823824
824825 def delete (self ):
825- """bypass interactive prompts and cascading dependencies"""
826- self .delete_quick ()
826+ """
827+ bypass interactive prompts and cascading dependencies
828+ :return: number of deleted items
829+ """
830+ return self .delete_quick (get_count = True )
827831
828832 def drop (self ):
829833 """bypass interactive prompts and cascading dependencies"""
0 commit comments