mirror of
https://github.com/django/django.git
synced 2025-06-13 07:29:13 +00:00
magic-removal: fix model module lookup
git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@1652 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
96afbcff43
commit
24c2187082
@ -106,15 +106,15 @@ def get_installed_model_modules(core_models=None):
|
|||||||
# django.models is a special case.
|
# django.models is a special case.
|
||||||
for submodule in (core_models or []):
|
for submodule in (core_models or []):
|
||||||
_installed_modules_cache.append(__import__('django.models.%s' % submodule, '', '', ['']))
|
_installed_modules_cache.append(__import__('django.models.%s' % submodule, '', '', ['']))
|
||||||
for m in get_installed_models():
|
for mod in get_installed_models():
|
||||||
for submodule in getattr(m, '__all__', []):
|
try:
|
||||||
mod = __import__('django.models.%s' % submodule, '', '', [''])
|
mod._MODELS
|
||||||
try:
|
except AttributeError:
|
||||||
mod._MODELS
|
pass # Skip model modules that don't actually have models in them.
|
||||||
except AttributeError:
|
else:
|
||||||
pass # Skip model modules that don't actually have models in them.
|
_installed_modules_cache.append(mod)
|
||||||
else:
|
|
||||||
_installed_modules_cache.append(mod)
|
|
||||||
return _installed_modules_cache
|
return _installed_modules_cache
|
||||||
|
|
||||||
class LazyDate:
|
class LazyDate:
|
||||||
@ -169,6 +169,7 @@ class RelatedObject(object):
|
|||||||
self.name = self.opts.module_name
|
self.name = self.opts.module_name
|
||||||
self.var_name = self.opts.object_name.lower()
|
self.var_name = self.opts.object_name.lower()
|
||||||
|
|
||||||
|
|
||||||
def flatten_data(self, follow, obj=None):
|
def flatten_data(self, follow, obj=None):
|
||||||
new_data = {}
|
new_data = {}
|
||||||
rel_instances = self.get_list(obj)
|
rel_instances = self.get_list(obj)
|
||||||
@ -738,6 +739,7 @@ class Manager(object):
|
|||||||
# objects -- MySQL returns the values as strings, instead.
|
# objects -- MySQL returns the values as strings, instead.
|
||||||
return [typecast_timestamp(str(row[0])) for row in cursor.fetchall()]
|
return [typecast_timestamp(str(row[0])) for row in cursor.fetchall()]
|
||||||
|
|
||||||
|
|
||||||
class ModelBase(type):
|
class ModelBase(type):
|
||||||
"Metaclass for all models"
|
"Metaclass for all models"
|
||||||
def __new__(cls, name, bases, attrs):
|
def __new__(cls, name, bases, attrs):
|
||||||
@ -839,6 +841,7 @@ class ModelBase(type):
|
|||||||
|
|
||||||
new_class._prepare()
|
new_class._prepare()
|
||||||
|
|
||||||
|
|
||||||
for field in fields:
|
for field in fields:
|
||||||
if field.rel:
|
if field.rel:
|
||||||
other = field.rel.to
|
other = field.rel.to
|
||||||
@ -847,7 +850,7 @@ class ModelBase(type):
|
|||||||
else:
|
else:
|
||||||
related = RelatedObject(other._meta, new_class, field)
|
related = RelatedObject(other._meta, new_class, field)
|
||||||
field.contribute_to_related_class(other, related)
|
field.contribute_to_related_class(other, related)
|
||||||
|
|
||||||
return new_class
|
return new_class
|
||||||
|
|
||||||
class Model(object):
|
class Model(object):
|
||||||
@ -944,7 +947,7 @@ class Model(object):
|
|||||||
cls.get_next_in_order = curry(cls.__get_next_or_previous_in_order, is_next=True)
|
cls.get_next_in_order = curry(cls.__get_next_or_previous_in_order, is_next=True)
|
||||||
cls.get_previous_in_order = curry(cls.__get_next_or_previous_in_order, is_next=False)
|
cls.get_previous_in_order = curry(cls.__get_next_or_previous_in_order, is_next=False)
|
||||||
|
|
||||||
|
|
||||||
_prepare = classmethod(_prepare)
|
_prepare = classmethod(_prepare)
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
@ -1007,6 +1010,7 @@ class Model(object):
|
|||||||
if hasattr(self, '_pre_delete'):
|
if hasattr(self, '_pre_delete'):
|
||||||
self._pre_delete()
|
self._pre_delete()
|
||||||
|
|
||||||
|
msgs = []
|
||||||
cursor = connection.cursor()
|
cursor = connection.cursor()
|
||||||
for related in self._meta.get_all_related_objects():
|
for related in self._meta.get_all_related_objects():
|
||||||
rel_opts_name = related.get_method_name_part()
|
rel_opts_name = related.get_method_name_part()
|
||||||
@ -1029,9 +1033,12 @@ class Model(object):
|
|||||||
(backend.quote_name(f.get_m2m_db_table(self._meta)),
|
(backend.quote_name(f.get_m2m_db_table(self._meta)),
|
||||||
backend.quote_name(self._meta.object_name.lower() + '_id')),
|
backend.quote_name(self._meta.object_name.lower() + '_id')),
|
||||||
[getattr(self, self._meta.pk.attname)])
|
[getattr(self, self._meta.pk.attname)])
|
||||||
|
|
||||||
cursor.execute("DELETE FROM %s WHERE %s=%%s" % \
|
cursor.execute("DELETE FROM %s WHERE %s=%%s" % \
|
||||||
(backend.quote_name(self._meta.db_table), backend.quote_name(self._meta.pk.column)),
|
(backend.quote_name(self._meta.db_table), backend.quote_name(self._meta.pk.column)),
|
||||||
[getattr(self, self._meta.pk.attname)])
|
[getattr(self, self._meta.pk.attname)])
|
||||||
|
|
||||||
|
|
||||||
connection.commit()
|
connection.commit()
|
||||||
setattr(self, self._meta.pk.attname, None)
|
setattr(self, self._meta.pk.attname, None)
|
||||||
for f in self._meta.fields:
|
for f in self._meta.fields:
|
||||||
@ -1230,12 +1237,13 @@ class Model(object):
|
|||||||
|
|
||||||
_add_related.alters_data = True
|
_add_related.alters_data = True
|
||||||
|
|
||||||
|
|
||||||
# Handles related many-to-many object retrieval.
|
# Handles related many-to-many object retrieval.
|
||||||
# Examples: Album.get_song(), Album.get_song_list(), Album.get_song_count()
|
# Examples: Album.get_song(), Album.get_song_list(), Album.get_song_count()
|
||||||
def _get_related_many_to_many(self, method_name, rel_class, rel_field, **kwargs):
|
def _get_related_many_to_many(self, method_name, rel_class, rel_field, **kwargs):
|
||||||
kwargs['%s__%s__exact' % (rel_field.name, rel_class._meta.pk.name)] = getattr(self, rel_class._meta.pk.attname)
|
kwargs['%s__%s__exact' % (rel_field.name, rel_class._meta.pk.name)] = getattr(self, rel_class._meta.pk.attname)
|
||||||
return getattr(rel_class._default_manager, method_name)(**kwargs)
|
return getattr(rel_class._default_manager, method_name)(**kwargs)
|
||||||
|
|
||||||
# Handles setting many-to-many related objects.
|
# Handles setting many-to-many related objects.
|
||||||
# Example: Album.set_songs()
|
# Example: Album.set_songs()
|
||||||
def _set_related_many_to_many(self, rel_class, rel_field, id_list):
|
def _set_related_many_to_many(self, rel_class, rel_field, id_list):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user