summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Holtermann <info@markusholtermann.eu>2015-06-26 15:05:55 +0200
committerMarkus Holtermann <info@markusholtermann.eu>2015-06-28 15:11:26 +0200
commit736fb1838cc25f5faf57cd2a4f6b6ab32ff9aadc (patch)
treeede15754ae9786faba0e4d381788f8dd2bcfc766
parentec4f219ecb7a5e43d0353633fac4dac42d0ee492 (diff)
Used field.clone() where applicable
-rw-r--r--django/db/migrations/state.py19
1 files changed, 5 insertions, 14 deletions
diff --git a/django/db/migrations/state.py b/django/db/migrations/state.py
index b1cba07a9e..33362ed06f 100644
--- a/django/db/migrations/state.py
+++ b/django/db/migrations/state.py
@@ -357,10 +357,9 @@ class ModelState(object):
continue
if isinstance(field, OrderWrt):
continue
- name, path, args, kwargs = field.deconstruct()
- field_class = import_string(path)
+ name = force_text(field.name, strings_only=True)
try:
- fields.append((name, field_class(*args, **kwargs)))
+ fields.append((name, field.clone()))
except TypeError as e:
raise TypeError("Couldn't reconstruct field %s on %s: %s" % (
name,
@@ -369,10 +368,9 @@ class ModelState(object):
))
if not exclude_rels:
for field in model._meta.local_many_to_many:
- name, path, args, kwargs = field.deconstruct()
- field_class = import_string(path)
+ name = force_text(field.name, strings_only=True)
try:
- fields.append((name, field_class(*args, **kwargs)))
+ fields.append((name, field.clone()))
except TypeError as e:
raise TypeError("Couldn't reconstruct m2m field %s on %s: %s" % (
name,
@@ -499,13 +497,6 @@ class ModelState(object):
}
return value
- def construct_fields(self):
- "Deep-clone the fields using deconstruction"
- for name, field in self.fields:
- _, path, args, kwargs = field.deconstruct()
- field_class = import_string(path)
- yield name, field_class(*args, **kwargs)
-
def construct_managers(self):
"Deep-clone the managers using deconstruction"
# Sort all managers by their creation counter
@@ -546,7 +537,7 @@ class ModelState(object):
except LookupError:
raise InvalidBasesError("Cannot resolve one or more bases from %r" % (self.bases,))
# Turn fields into a dict for the body, add other bits
- body = dict(self.construct_fields())
+ body = {name: field.clone() for name, field in self.fields}
body['Meta'] = meta
body['__module__'] = "__fake__"