summaryrefslogtreecommitdiff
path: root/tests/regressiontests/admin_util
diff options
context:
space:
mode:
authorAnssi Kääriäinen <akaariai@gmail.com>2012-09-20 18:51:30 +0300
committerAnssi Kääriäinen <akaariai@gmail.com>2012-09-28 18:16:08 +0300
commit1cd6e04cd4f768bcd4385b75de433d497d938f82 (patch)
tree9aa9611692cd492cc6666c3c3a02df2fd2c7df91 /tests/regressiontests/admin_util
parent3fcca0e94721a734882389ce473f522d293907e9 (diff)
Fixed #18676 -- Allow fast-path deletion of objects
Objects can be fast-path deleted if there are no signals, and there are no further cascades. If fast-path is taken, the objects do not need to be loaded into memory before deletion. Thanks to Jeremy Dunck, Simon Charette and Alex Gaynor for reviewing the patch.
Diffstat (limited to 'tests/regressiontests/admin_util')
-rw-r--r--tests/regressiontests/admin_util/models.py3
-rw-r--r--tests/regressiontests/admin_util/tests.py13
2 files changed, 15 insertions, 1 deletions
diff --git a/tests/regressiontests/admin_util/models.py b/tests/regressiontests/admin_util/models.py
index b3504a1fa4..32a6cd6291 100644
--- a/tests/regressiontests/admin_util/models.py
+++ b/tests/regressiontests/admin_util/models.py
@@ -39,3 +39,6 @@ class Guest(models.Model):
class Meta:
verbose_name = "awesome guest"
+
+class EventGuide(models.Model):
+ event = models.ForeignKey(Event, on_delete=models.DO_NOTHING)
diff --git a/tests/regressiontests/admin_util/tests.py b/tests/regressiontests/admin_util/tests.py
index d04740ce95..ef8a91d1db 100644
--- a/tests/regressiontests/admin_util/tests.py
+++ b/tests/regressiontests/admin_util/tests.py
@@ -17,7 +17,7 @@ from django.utils.formats import localize
from django.utils.safestring import mark_safe
from django.utils import six
-from .models import Article, Count, Event, Location
+from .models import Article, Count, Event, Location, EventGuide
class NestedObjectsTests(TestCase):
@@ -71,6 +71,17 @@ class NestedObjectsTests(TestCase):
# Should not require additional queries to populate the nested graph.
self.assertNumQueries(2, self._collect, 0)
+ def test_on_delete_do_nothing(self):
+ """
+ Check that the nested collector doesn't query for DO_NOTHING objects.
+ """
+ n = NestedObjects(using=DEFAULT_DB_ALIAS)
+ objs = [Event.objects.create()]
+ EventGuide.objects.create(event=objs[0])
+ with self.assertNumQueries(2):
+ # One for Location, one for Guest, and no query for EventGuide
+ n.collect(objs)
+
class UtilTests(unittest.TestCase):
def test_values_from_lookup_field(self):
"""