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
This commit is contained in:
parent
1a3b112610
commit
9e957485bd
|
@ -44,7 +44,7 @@ class ModelBase(type):
|
||||||
new_class._meta.app_label = model_module.__name__.split('.')[-2]
|
new_class._meta.app_label = model_module.__name__.split('.')[-2]
|
||||||
|
|
||||||
# Bail out early if we have already created this class.
|
# 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:
|
if m is not None:
|
||||||
return m
|
return m
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ class ModelBase(type):
|
||||||
# the first class for this model to register with the framework. There
|
# 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
|
# should only be one class for each model, so we must always return the
|
||||||
# registered version.
|
# registered version.
|
||||||
return get_model(new_class._meta.app_label, name)
|
return get_model(new_class._meta.app_label, name, False)
|
||||||
|
|
||||||
class Model(object):
|
class Model(object):
|
||||||
__metaclass__ = ModelBase
|
__metaclass__ = ModelBase
|
||||||
|
|
|
@ -75,11 +75,15 @@ def get_models(app_mod=None):
|
||||||
model_list.extend(get_models(app_mod))
|
model_list.extend(get_models(app_mod))
|
||||||
return model_list
|
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.
|
Returns None if no model is found.
|
||||||
"""
|
"""
|
||||||
|
if seed_cache:
|
||||||
|
get_apps()
|
||||||
try:
|
try:
|
||||||
model_dict = _app_models[app_label]
|
model_dict = _app_models[app_label]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
|
|
Loading…
Reference in New Issue