diff --git a/django/contrib/contenttypes/models.py b/django/contrib/contenttypes/models.py
index 1bb07e0..6d919b4 100644
--- a/django/contrib/contenttypes/models.py
+++ b/django/contrib/contenttypes/models.py
@@ -13,6 +13,7 @@ def get_by_natural_key(self, app_label, model):
             ct = self.__class__._cache[self.db][(app_label, model)]
         except KeyError:
             ct = self.get(app_label=app_label, model=model)
+            self._add_to_cache(self.db, ct)
         return ct
 
     def _get_opts(self, model):
diff --git a/django/contrib/contenttypes/tests.py b/django/contrib/contenttypes/tests.py
index f2a338e..3b7906c 100644
--- a/django/contrib/contenttypes/tests.py
+++ b/django/contrib/contenttypes/tests.py
@@ -51,8 +51,8 @@ def tearDown(self):
     def test_lookup_cache(self):
         """
         Make sure that the content type cache (see ContentTypeManager)
-        works correctly. Lookups for a particular content type -- by model or
-        by ID -- should hit the database only on the first lookup.
+        works correctly. Lookups for a particular content type -- by model, ID
+        or natural key -- should hit the database only on the first lookup.
         """
 
         # At this point, a lookup for a ContentType should hit the DB
@@ -60,16 +60,30 @@ def test_lookup_cache(self):
             ContentType.objects.get_for_model(ContentType)
 
         # A second hit, though, won't hit the DB, nor will a lookup by ID
+        # or natural key
         with self.assertNumQueries(0):
             ct = ContentType.objects.get_for_model(ContentType)
         with self.assertNumQueries(0):
             ContentType.objects.get_for_id(ct.id)
+        with self.assertNumQueries(0):
+            ContentType.objects.get_by_natural_key('contenttypes',
+                                                   'contenttype')
 
         # Once we clear the cache, another lookup will again hit the DB
         ContentType.objects.clear_cache()
         with self.assertNumQueries(1):
             ContentType.objects.get_for_model(ContentType)
 
+        # The same should happen with a lookup by natural key
+        ContentType.objects.clear_cache()
+        with self.assertNumQueries(1):
+            ContentType.objects.get_by_natural_key('contenttypes',
+                                                   'contenttype')
+        # And a second hit shouldn't hit the DB
+        with self.assertNumQueries(0):
+            ContentType.objects.get_by_natural_key('contenttypes',
+                                                   'contenttype')
+
     def test_get_for_models_empty_cache(self):
         # Empty cache.
         with self.assertNumQueries(1):
diff --git a/tests/regressiontests/comment_tests/tests/templatetag_tests.py b/tests/regressiontests/comment_tests/tests/templatetag_tests.py
index de39767..0b036ce 100644
--- a/tests/regressiontests/comment_tests/tests/templatetag_tests.py
+++ b/tests/regressiontests/comment_tests/tests/templatetag_tests.py
@@ -130,8 +130,7 @@ def testNumberQueries(self):
         with self.assertNumQueries(4):
             self.testRenderCommentListFromObject()
 
-        # Force the CT to be cached
-        ct = ContentType.objects.get_for_model(Article)
+        # CT's should be cached
         with self.assertNumQueries(3):
             self.testRenderCommentListFromObject()
 
@@ -141,7 +140,6 @@ def testNumberQueries(self):
         with self.assertNumQueries(4):
             self.verifyGetCommentList()
 
-        ct = ContentType.objects.get_for_model(Author)
         with self.assertNumQueries(3):
             self.verifyGetCommentList()
 
@@ -151,7 +149,6 @@ def testNumberQueries(self):
         with self.assertNumQueries(3):
             self.testRenderCommentForm()
 
-        ct = ContentType.objects.get_for_model(Article)
         with self.assertNumQueries(2):
             self.testRenderCommentForm()
 
@@ -161,7 +158,6 @@ def testNumberQueries(self):
         with self.assertNumQueries(3):
             self.testGetCommentForm()
 
-        ct = ContentType.objects.get_for_model(Article)
         with self.assertNumQueries(2):
             self.testGetCommentForm()
 
@@ -171,6 +167,5 @@ def testNumberQueries(self):
         with self.assertNumQueries(3):
             self.verifyGetCommentCount()
 
-        ct = ContentType.objects.get_for_model(Article)
         with self.assertNumQueries(2):
             self.verifyGetCommentCount()
