Loading django/db/models/sql/subqueries.py +1 −1 Original line number Diff line number Diff line Loading @@ -68,7 +68,7 @@ class DeleteQuery(Query): # We can't do the delete using subquery. values = list(query.values_list('pk', flat=True)) if not values: return return 0 return self.delete_batch(values, using) else: innerq.clear_select_clause() Loading docs/releases/1.9.1.txt +3 −0 Original line number Diff line number Diff line Loading @@ -34,3 +34,6 @@ Bugfixes created by ``startapp`` on Python 2 (:ticket:`25909`). Add this line to your own ``apps.py`` files created using Django 1.9 if you want your migrations to work on both Python 2 and Python 3. * Prevented ``QuerySet.delete()`` from crashing on MySQL when querying across relations (:ticket`25882`). tests/delete/tests.py +12 −0 Original line number Diff line number Diff line Loading @@ -503,3 +503,15 @@ class FastDeleteTests(TestCase): # that + fast delete of the related objs. self.assertNumQueries(2, a.delete) self.assertEqual(User.objects.count(), 0) def test_fast_delete_empty_no_update_can_self_select(self): """ #25932 - Fast deleting on backends that don't have the `no_update_can_self_select` feature should work even if the specified filter doesn't match any row. """ with self.assertNumQueries(1): self.assertEqual( User.objects.filter(avatar__desc='missing').delete(), (0, {'delete.User': 0}) ) Loading
django/db/models/sql/subqueries.py +1 −1 Original line number Diff line number Diff line Loading @@ -68,7 +68,7 @@ class DeleteQuery(Query): # We can't do the delete using subquery. values = list(query.values_list('pk', flat=True)) if not values: return return 0 return self.delete_batch(values, using) else: innerq.clear_select_clause() Loading
docs/releases/1.9.1.txt +3 −0 Original line number Diff line number Diff line Loading @@ -34,3 +34,6 @@ Bugfixes created by ``startapp`` on Python 2 (:ticket:`25909`). Add this line to your own ``apps.py`` files created using Django 1.9 if you want your migrations to work on both Python 2 and Python 3. * Prevented ``QuerySet.delete()`` from crashing on MySQL when querying across relations (:ticket`25882`).
tests/delete/tests.py +12 −0 Original line number Diff line number Diff line Loading @@ -503,3 +503,15 @@ class FastDeleteTests(TestCase): # that + fast delete of the related objs. self.assertNumQueries(2, a.delete) self.assertEqual(User.objects.count(), 0) def test_fast_delete_empty_no_update_can_self_select(self): """ #25932 - Fast deleting on backends that don't have the `no_update_can_self_select` feature should work even if the specified filter doesn't match any row. """ with self.assertNumQueries(1): self.assertEqual( User.objects.filter(avatar__desc='missing').delete(), (0, {'delete.User': 0}) )