diff options
| author | Hasan Ramezani <hasan.r67@gmail.com> | 2020-04-18 18:31:17 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-04-20 09:51:54 +0200 |
| commit | 35a67b3731dab2b546b3ed4d7f2deff529465c34 (patch) | |
| tree | 05b7e25ca327961d6791f4b64b2e3657c7b809bd | |
| parent | c86201b6ed4f8256b0a0520c08aa674f623d4127 (diff) | |
Fixed #31474 -- Made QuerySet.delete() not return the number of deleted objects if it's zero.
| -rw-r--r-- | django/db/models/deletion.py | 6 | ||||
| -rw-r--r-- | tests/delete/tests.py | 7 |
2 files changed, 7 insertions, 6 deletions
diff --git a/django/db/models/deletion.py b/django/db/models/deletion.py index 16dff6a1cd..90623437f5 100644 --- a/django/db/models/deletion.py +++ b/django/db/models/deletion.py @@ -408,7 +408,8 @@ class Collector: # fast deletes for qs in self.fast_deletes: count = qs._raw_delete(using=self.using) - deleted_counter[qs.model._meta.label] += count + if count: + deleted_counter[qs.model._meta.label] += count # update fields for model, instances_for_fieldvalues in self.field_updates.items(): @@ -426,7 +427,8 @@ class Collector: query = sql.DeleteQuery(model) pk_list = [obj.pk for obj in instances] count = query.delete_batch(pk_list, self.using) - deleted_counter[model._meta.label] += count + if count: + deleted_counter[model._meta.label] += count if not model._meta.auto_created: for obj in instances: diff --git a/tests/delete/tests.py b/tests/delete/tests.py index d8424670c9..c32ebba83f 100644 --- a/tests/delete/tests.py +++ b/tests/delete/tests.py @@ -522,11 +522,10 @@ class DeletionTests(TestCase): existed_objs = { R._meta.label: R.objects.count(), HiddenUser._meta.label: HiddenUser.objects.count(), - A._meta.label: A.objects.count(), - MR._meta.label: MR.objects.count(), HiddenUserProfile._meta.label: HiddenUserProfile.objects.count(), } deleted, deleted_objs = R.objects.all().delete() + self.assertCountEqual(deleted_objs.keys(), existed_objs.keys()) for k, v in existed_objs.items(): self.assertEqual(deleted_objs[k], v) @@ -550,13 +549,13 @@ class DeletionTests(TestCase): existed_objs = { R._meta.label: R.objects.count(), HiddenUser._meta.label: HiddenUser.objects.count(), - A._meta.label: A.objects.count(), MR._meta.label: MR.objects.count(), HiddenUserProfile._meta.label: HiddenUserProfile.objects.count(), M.m2m.through._meta.label: M.m2m.through.objects.count(), } deleted, deleted_objs = r.delete() self.assertEqual(deleted, sum(existed_objs.values())) + self.assertCountEqual(deleted_objs.keys(), existed_objs.keys()) for k, v in existed_objs.items(): self.assertEqual(deleted_objs[k], v) @@ -694,7 +693,7 @@ class FastDeleteTests(TestCase): with self.assertNumQueries(1): self.assertEqual( User.objects.filter(avatar__desc='missing').delete(), - (0, {'delete.User': 0}) + (0, {}), ) def test_fast_delete_combined_relationships(self): |
