diff -r cf42f6bf945b django/db/models/loading.py
--- a/django/db/models/loading.py	Fri Oct 30 09:11:56 2009 +0000
+++ b/django/db/models/loading.py	Fri Oct 30 16:28:20 2009 -0700
@@ -12,6 +12,16 @@
 __all__ = ('get_apps', 'get_app', 'get_models', 'get_model', 'register_models',
         'load_app', 'app_cache_ready')
 
+def filter_deferred_models(models):
+    """
+    Takes a list of models and returns the models that are not deferred.
+    
+    Deferred models are temporary models that are created to represent the
+    results of queries that are made using the ``only`` and ``defer``
+    ``QuerySet`` methods.
+    """
+    return [model for model in models if not model._deferred]
+
 class AppCache(object):
     """
     A cache that stores installed applications and their models. Used to
@@ -135,15 +145,19 @@
         """
         Given a module containing models, returns a list of the models.
         Otherwise returns a list of all installed models.
+        
+        Temporary models that were created for representing the results of
+        deferred-field querysets are not included.
         """
         self._populate()
         if app_mod:
-            return self.app_models.get(app_mod.__name__.split('.')[-2], SortedDict()).values()
+            model_list = self.app_models.get(app_mod.__name__.split('.')[-2], SortedDict()).values()
         else:
             model_list = []
             for app_entry in self.app_models.itervalues():
                 model_list.extend(app_entry.values())
-            return model_list
+        
+        return filter_deferred_models(model_list)
 
     def get_model(self, app_label, model_name, seed_cache=True):
         """
diff -r cf42f6bf945b tests/modeltests/defer/models.py
--- a/tests/modeltests/defer/models.py	Fri Oct 30 09:11:56 2009 +0000
+++ b/tests/modeltests/defer/models.py	Fri Oct 30 16:28:20 2009 -0700
@@ -183,6 +183,11 @@
 >>> obj.name = "bb"
 >>> obj.save()
 
+# Regression for #11936 - loading.get_models does not return deferred models
+>>> from django.db.models.loading import get_models
+>>> get_models(models.get_app('defer'))
+[<class 'modeltests.defer.models.Secondary'>, <class 'modeltests.defer.models.Primary'>, <class 'modeltests.defer.models.Child'>, <class 'modeltests.defer.models.BigChild'>]
+
 # Finally, we need to flush the app cache for the defer module.
 # Using only/defer creates some artifical entries in the app cache
 # that messes up later tests. Purge all entries, just to be sure.
