diff options
| author | Andrew Godwin <andrew@aeracode.org> | 2013-06-07 15:36:31 +0100 |
|---|---|---|
| committer | Andrew Godwin <andrew@aeracode.org> | 2013-06-07 15:36:31 +0100 |
| commit | c7aa4b5338e6bcf62f66eb53b309aa3a69b9a55d (patch) | |
| tree | d21ecd10098fca7e4a3c12852e9596c19db155ad /django | |
| parent | 4492f06408828355a827824c805fd631a3b59d1b (diff) | |
Field encoding
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/migrations/writer.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/django/db/migrations/writer.py b/django/db/migrations/writer.py index b32bb987d9..b21c6c9648 100644 --- a/django/db/migrations/writer.py +++ b/django/db/migrations/writer.py @@ -1,5 +1,6 @@ import datetime import types +from django.db import models class MigrationWriter(object): @@ -85,6 +86,25 @@ class MigrationWriter(object): # Simple types elif isinstance(value, (int, long, float, str, unicode, bool, types.NoneType)): return repr(value), set() + # Django fields + elif isinstance(value, models.Field): + attr_name, path, args, kwargs = value.deconstruct() + module, name = path.rsplit(".", 1) + if module == "django.db.models": + imports = set() + else: + imports = set("import %s" % module) + name = path + arg_strings = [] + for arg in args: + arg_string, arg_imports = cls.serialize(arg) + arg_strings.append(arg_string) + imports.update(arg_imports) + for kw, arg in kwargs.items(): + arg_string, arg_imports = cls.serialize(arg) + imports.update(arg_imports) + arg_strings.append("%s=%s" % (kw, arg_string)) + return "%s(%s)" % (name, ", ".join(arg_strings)), imports # Functions elif isinstance(value, (types.FunctionType, types.BuiltinFunctionType)): # Special-cases, as these don't have im_class |
