1
0
mirror of https://github.com/django/django.git synced 2025-10-24 14:16:09 +00:00

Fixed #30856 -- Combined fast-delete queries by model during cascade deletion.

Reduced the number of queries required when performing cascade deletion
for a model referenced multiple time by another one by performing an
union of reference lookups.
This commit is contained in:
Simon Charette
2019-10-07 16:03:50 +02:00
committed by Mariusz Felisiak
parent 44522d1036
commit 26c66f4519
3 changed files with 51 additions and 35 deletions

View File

@@ -582,3 +582,11 @@ class FastDeleteTests(TestCase):
User.objects.filter(avatar__desc='missing').delete(),
(0, {'delete.User': 0})
)
def test_fast_delete_combined_relationships(self):
# The cascading fast-delete of SecondReferrer should be combined
# in a single DELETE WHERE referrer_id OR unique_field.
origin = Origin.objects.create()
referer = Referrer.objects.create(origin=origin, unique_field=42)
with self.assertNumQueries(2):
referer.delete()