Kaydet (Commit) 9e957485 authored tarafından Malcolm Tredinnick's avatar Malcolm Tredinnick

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
üst 1a3b1126
...@@ -44,7 +44,7 @@ class ModelBase(type): ...@@ -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): ...@@ -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): ...@@ -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:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment