[3.0.x] Refs #27914 -- Fixed serialization of nested enum.Enum classes in migrations.
Backport of 6452112640
from master
This commit is contained in:
parent
1a4db2cc28
commit
30271a47da
|
@ -121,7 +121,7 @@ class EnumSerializer(BaseSerializer):
|
|||
enum_class = self.value.__class__
|
||||
module = enum_class.__module__
|
||||
return (
|
||||
'%s.%s[%r]' % (module, enum_class.__name__, self.value.name),
|
||||
'%s.%s[%r]' % (module, enum_class.__qualname__, self.value.name),
|
||||
{'import %s' % module},
|
||||
)
|
||||
|
||||
|
|
|
@ -184,6 +184,9 @@ class WriterTests(SimpleTestCase):
|
|||
"""
|
||||
Tests the migration writer (makes migration files from Migration instances)
|
||||
"""
|
||||
class NestedEnum(enum.IntEnum):
|
||||
A = 1
|
||||
B = 2
|
||||
|
||||
def safe_exec(self, string, value=None):
|
||||
d = {}
|
||||
|
@ -289,6 +292,14 @@ class WriterTests(SimpleTestCase):
|
|||
IntEnum.B,
|
||||
("migrations.test_writer.IntEnum['B']", {'import migrations.test_writer'})
|
||||
)
|
||||
self.assertSerializedResultEqual(
|
||||
self.NestedEnum.A,
|
||||
(
|
||||
"migrations.test_writer.WriterTests.NestedEnum['A']",
|
||||
{'import migrations.test_writer'},
|
||||
),
|
||||
)
|
||||
self.assertSerializedEqual(self.NestedEnum.A)
|
||||
|
||||
field = models.CharField(default=TextEnum.B, choices=[(m.value, m) for m in TextEnum])
|
||||
string = MigrationWriter.serialize(field)[0]
|
||||
|
|
Loading…
Reference in New Issue