diff options
| author | Markus Holtermann <info@markusholtermann.eu> | 2014-01-22 09:06:06 +0100 |
|---|---|---|
| committer | Markus Holtermann <info@markusholtermann.eu> | 2014-01-22 09:21:54 +0100 |
| commit | 047394f79c2cbc6cf44684a1f0d17aba1ddfe1c8 (patch) | |
| tree | 5f689dfc07cb2af968d5a58c76986421556bc3dd /django/db | |
| parent | 088cb711fe8c8bfb6af04ac7ef094817802c4256 (diff) | |
Fixed #21852 -- Make migration writer serialize iterators
Diffstat (limited to 'django/db')
| -rw-r--r-- | django/db/migrations/writer.py | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/django/db/migrations/writer.py b/django/db/migrations/writer.py index 355ad3d90e..da56d0c171 100644 --- a/django/db/migrations/writer.py +++ b/django/db/migrations/writer.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals import datetime import inspect import decimal +import collections from importlib import import_module import os import types @@ -257,6 +258,16 @@ class MigrationWriter(object): if hasattr(value, "__module__"): module = value.__module__ return "%s.%s" % (module, value.__name__), set(["import %s" % module]) + # Other iterables + elif isinstance(value, collections.Iterable): + imports = set() + strings = [] + for item in value: + item_string, item_imports = cls.serialize(item) + imports.update(item_imports) + strings.append(item_string) + format = "(%s)" if len(strings) > 1 else "(%s,)" + return format % (", ".join(strings)), imports # Uh oh. else: raise ValueError("Cannot serialize: %r\nThere are some values Django cannot serialize into migration files.\nFor more, see https://docs.djangoproject.com/en/dev/topics/migrations/#migration-serializing" % value) |
