From 9e957485bd99f0c4de457201f621fab7b63ad784 Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Sat, 29 Jul 2006 21:04:41 +0000 Subject: [PATCH] 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 --- django/db/models/base.py | 4 ++-- 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: