summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2006-07-29 21:04:41 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2006-07-29 21:04:41 +0000
commit9e957485bd99f0c4de457201f621fab7b63ad784 (patch)
treee83ec2c18d646449145076e8dce825940487f726
parent1a3b11261069490c534fd7487503ddc526680244 (diff)
downloaddjango-9e957485bd99f0c4de457201f621fab7b63ad784.tar.gz
Seed the global app cache in a call to db.models.get_model() except when we are
constructing a model class. Refs #2348. git-svn-id: http://code.djangoproject.com/svn/django/trunk@3490 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/db/models/base.py4
-rw-r--r--django/db/models/loading.py8
2 files changed, 8 insertions, 4 deletions
diff --git a/django/db/models/base.py b/django/db/models/base.py
index 305ed9b924..657236571d 100644
--- a/django/db/models/base.py
+++ b/django/db/models/base.py
@@ -44,7 +44,7 @@ class ModelBase(type):
new_class._meta.app_label = model_module.__name__.split('.')[-2]
# Bail out early if we have already created this class.
- m = get_model(new_class._meta.app_label, name)
+ m = get_model(new_class._meta.app_label, name, False)
if m is not None:
return m
@@ -68,7 +68,7 @@ class ModelBase(type):
# the first class for this model to register with the framework. There
# should only be one class for each model, so we must always return the
# registered version.
- return get_model(new_class._meta.app_label, name)
+ return get_model(new_class._meta.app_label, name, False)
class Model(object):
__metaclass__ = ModelBase
diff --git a/django/db/models/loading.py b/django/db/models/loading.py
index c7920fa4e0..ece41ed6e4 100644
--- a/django/db/models/loading.py
+++ b/django/db/models/loading.py
@@ -75,11 +75,15 @@ def get_models(app_mod=None):
model_list.extend(get_models(app_mod))
return model_list
-def get_model(app_label, model_name):
+def get_model(app_label, model_name, seed_cache = True):
"""
- Returns the model matching the given app_label and case-insensitive model_name.
+ Returns the model matching the given app_label and case-insensitive
+ model_name.
+
Returns None if no model is found.
"""
+ if seed_cache:
+ get_apps()
try:
model_dict = _app_models[app_label]
except KeyError: