summaryrefslogtreecommitdiff
path: root/tests/model_forms
diff options
context:
space:
mode:
authorJason Myers <jason@jasonamyers.com>2013-11-03 07:19:25 -0600
committerJason Myers <jason@jasonamyers.com>2013-11-03 07:19:25 -0600
commit4f151da1e5e9bf527548a5737d9cd314e3abc68e (patch)
tree6ba849758c7c34cdf593ad6e699ad420b7ce57c1 /tests/model_forms
parent6f070273856720b1192af534f37622a9c42525b9 (diff)
parentf40f90d63b4be295269b5f0de5f919be22daba5c (diff)
Merging in master
Signed-off-by: Jason Myers <jason@jasonamyers.com>
Diffstat (limited to 'tests/model_forms')
-rw-r--r--tests/model_forms/tests.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/model_forms/tests.py b/tests/model_forms/tests.py
index 5e443011c2..2af5b5a07d 100644
--- a/tests/model_forms/tests.py
+++ b/tests/model_forms/tests.py
@@ -828,6 +828,41 @@ class ModelToDictTests(TestCase):
# Ensure many-to-many relation appears as a list
self.assertIsInstance(d['categories'], list)
+ def test_reuse_prefetched(self):
+ # model_to_dict should not hit the database if it can reuse
+ # the data populated by prefetch_related.
+ categories = [
+ Category(name='TestName1', slug='TestName1', url='url1'),
+ Category(name='TestName2', slug='TestName2', url='url2'),
+ Category(name='TestName3', slug='TestName3', url='url3')
+ ]
+ for c in categories:
+ c.save()
+ writer = Writer(name='Test writer')
+ writer.save()
+
+ art = Article(
+ headline='Test article',
+ slug='test-article',
+ pub_date=datetime.date(1988, 1, 4),
+ writer=writer,
+ article='Hello.'
+ )
+ art.save()
+ for c in categories:
+ art.categories.add(c)
+
+ art = Article.objects.prefetch_related('categories').get(pk=art.pk)
+
+ with self.assertNumQueries(0):
+ d = model_to_dict(art)
+
+ #Ensure all many-to-many categories appear in model_to_dict
+ for c in categories:
+ self.assertIn(c.pk, d['categories'])
+ #Ensure many-to-many relation appears as a list
+ self.assertIsInstance(d['categories'], list)
+
class OldFormForXTests(TestCase):
def test_base_form(self):