summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaura Feier <feierlaura10@gmail.com>2015-11-04 14:27:35 +0200
committerTim Graham <timograham@gmail.com>2015-11-09 15:04:48 -0500
commit7862cbda86cdbced5fbfe4f0056105e657c1f92c (patch)
tree5b3ccabf82b53a8e91881b450c61787f5dce65fe
parent1f29164ced01bde92c72d20d67bc453484a4f078 (diff)
Fixed #24576 -- Made deletion of related objects deterministic.
-rw-r--r--django/db/models/deletion.py2
-rw-r--r--tests/delete/tests.py5
2 files changed, 4 insertions, 3 deletions
diff --git a/django/db/models/deletion.py b/django/db/models/deletion.py
index 831e3c03db..1c3b7203b5 100644
--- a/django/db/models/deletion.py
+++ b/django/db/models/deletion.py
@@ -64,7 +64,7 @@ class Collector(object):
def __init__(self, using):
self.using = using
# Initially, {model: {instances}}, later values become lists.
- self.data = {}
+ self.data = OrderedDict()
self.field_updates = {} # {model: {(field, value): {instances}}}
# fast_deletes is a list of queryset-likes that can be deleted without
# fetching the objects into memory.
diff --git a/tests/delete/tests.py b/tests/delete/tests.py
index 60c61ed281..9e383acb4e 100644
--- a/tests/delete/tests.py
+++ b/tests/delete/tests.py
@@ -224,12 +224,13 @@ class DeletionTests(TestCase):
s2 = S.objects.create(pk=2, r=r)
T.objects.create(pk=1, s=s1)
T.objects.create(pk=2, s=s2)
+ RChild.objects.create(r_ptr=r)
r.delete()
self.assertEqual(
- pre_delete_order, [(T, 2), (T, 1), (S, 2), (S, 1), (R, 1)]
+ pre_delete_order, [(T, 2), (T, 1), (RChild, 1), (S, 2), (S, 1), (R, 1)]
)
self.assertEqual(
- post_delete_order, [(T, 1), (T, 2), (S, 1), (S, 2), (R, 1)]
+ post_delete_order, [(T, 1), (T, 2), (RChild, 1), (S, 1), (S, 2), (R, 1)]
)
models.signals.post_delete.disconnect(log_post_delete)