diff --git a/django/db/models/manipulators.py b/django/db/models/manipulators.py index 75994f203d..f0055018ab 100644 --- a/django/db/models/manipulators.py +++ b/django/db/models/manipulators.py @@ -5,7 +5,7 @@ from django.db.models.exceptions import BadCommand from django.dispatch import dispatcher from django.db.models import signals from django.utils.functional import curry -from django.utils.datastructures import dot_expand, MultiValueDict +from django.utils.datastructures import DotExpandedDict, MultiValueDict import types def add_manipulators(sender): @@ -79,7 +79,6 @@ class AutomaticManipulator(forms.Manipulator): def save(self, new_data): # TODO: big cleanup when core fields go -> use recursive manipulators. - from django.utils.datastructures import DotExpandedDict params = {} for f in self.opts.fields: # Fields with auto_now_add should keep their original value in the change stage. diff --git a/django/utils/datastructures.py b/django/utils/datastructures.py index 818e5b90f2..4ad7bc52da 100644 --- a/django/utils/datastructures.py +++ b/django/utils/datastructures.py @@ -224,18 +224,3 @@ class DotExpandedDict(dict): current[bits[-1]] = v except TypeError: # Special-case if current isn't a dict. current = {bits[-1] : v} - -def dot_expand(key_to_list_mapping, dict_factory=dict): - top = dict_factory() - - for k, v in key_to_list_mapping.items(): - current = top - bits = k.split('.') - for bit in bits[:-1]: - current = current.setdefault(bit, dict_factory()) - # Now assign value to current position - try: - current[bits[-1]] = v - except TypeError: # Special-case if current isn't a dict. - current = dict_factory( (bits[-1], v) ) - return top \ No newline at end of file