diff options
author | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2006-07-29 21:04:41 +0000 |
---|---|---|
committer | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2006-07-29 21:04:41 +0000 |
commit | 9e957485bd99f0c4de457201f621fab7b63ad784 (patch) | |
tree | e83ec2c18d646449145076e8dce825940487f726 | |
parent | 1a3b11261069490c534fd7487503ddc526680244 (diff) | |
download | django-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.py | 4 | ||||
-rw-r--r-- | django/db/models/loading.py | 8 |
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: |