mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #21852 -- Make migration writer serialize iterators
This commit is contained in:
		| @@ -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) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user