Loading django/db/migrations/writer.py +3 −1 Original line number Diff line number Diff line Loading @@ -302,7 +302,7 @@ class MigrationWriter(object): value = force_text(value) # Sequences if isinstance(value, (list, set, tuple)): if isinstance(value, (frozenset, list, set, tuple)): imports = set() strings = [] for item in value: Loading @@ -312,6 +312,8 @@ class MigrationWriter(object): if isinstance(value, set): # Don't use the literal "{%s}" as it doesn't support empty set format = "set([%s])" elif isinstance(value, frozenset): format = "frozenset([%s])" elif isinstance(value, tuple): # When len(value)==0, the empty tuple should be serialized as # "()", not "(,)" because (,) is invalid Python syntax. Loading tests/migrations/test_writer.py +4 −0 Original line number Diff line number Diff line Loading @@ -347,6 +347,10 @@ class WriterTests(TestCase): self.assertSerializedEqual(FoodManager('a', 'b')) self.assertSerializedEqual(FoodManager('x', 'y', c=3, d=4)) def test_serialize_frozensets(self): self.assertSerializedEqual(frozenset()) self.assertSerializedEqual(frozenset("let it go")) def test_simple_migration(self): """ Tests serializing a simple migration. Loading Loading
django/db/migrations/writer.py +3 −1 Original line number Diff line number Diff line Loading @@ -302,7 +302,7 @@ class MigrationWriter(object): value = force_text(value) # Sequences if isinstance(value, (list, set, tuple)): if isinstance(value, (frozenset, list, set, tuple)): imports = set() strings = [] for item in value: Loading @@ -312,6 +312,8 @@ class MigrationWriter(object): if isinstance(value, set): # Don't use the literal "{%s}" as it doesn't support empty set format = "set([%s])" elif isinstance(value, frozenset): format = "frozenset([%s])" elif isinstance(value, tuple): # When len(value)==0, the empty tuple should be serialized as # "()", not "(,)" because (,) is invalid Python syntax. Loading
tests/migrations/test_writer.py +4 −0 Original line number Diff line number Diff line Loading @@ -347,6 +347,10 @@ class WriterTests(TestCase): self.assertSerializedEqual(FoodManager('a', 'b')) self.assertSerializedEqual(FoodManager('x', 'y', c=3, d=4)) def test_serialize_frozensets(self): self.assertSerializedEqual(frozenset()) self.assertSerializedEqual(frozenset("let it go")) def test_simple_migration(self): """ Tests serializing a simple migration. Loading