Index: django/db/models/base.py
===================================================================
--- django/db/models/base.py	(revision 3211)
+++ django/db/models/base.py	(working copy)
@@ -9,7 +9,7 @@
 from django.db.models.options import Options, AdminOptions
 from django.db import connection, backend, transaction
 from django.db.models import signals
-from django.db.models.loading import register_models
+from django.db.models.loading import register_models, get_model
 from django.dispatch import dispatcher
 from django.utils.datastructures import SortedDict
 from django.utils.functional import curry
@@ -60,7 +60,7 @@
         new_class._prepare()
 
         register_models(new_class._meta.app_label, new_class)
-        return new_class
+        return get_model(new_class._meta.app_label, name)
 
 class Model(object):
     __metaclass__ = ModelBase
Index: django/db/models/loading.py
===================================================================
--- django/db/models/loading.py	(revision 3211)
+++ django/db/models/loading.py	(working copy)
@@ -73,7 +73,6 @@
     Returns the model matching the given app_label and case-insensitive model_name.
     Returns None if no model is found.
     """
-    get_apps() # Run get_apps() to populate the _app_list cache. Slightly hackish.
     try:
         model_dict = _app_models[app_label]
     except KeyError:
