#30774: Migrations uses value of enum object instead of its name.
-------------------------------------+-------------------------------------
Reporter: oasl | Owner: Hasan
| Ramezani
Type: Bug | Status: assigned
Component: Migrations | Version: master
Severity: Normal | Resolution:
Keywords: Enum, Migrations | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Hasan Ramezani):
Here is the diff based on the **@oasl** solution
{{{
Shouldn't the code generated by the migration uses the name of the Status
Enum 'GOOD', not the value of it, since it is changeable?
It should be:
('status', models.CharField(default=Status['GOOD'], max_length=128))
}}}
{{{
diff --git a/django/db/migrations/serializer.py
b/django/db/migrations/serializer.py
index 27b5cbd379..b00c6f0df2 100644
--- a/django/db/migrations/serializer.py
+++ b/django/db/migrations/serializer.py
@@ -120,9 +120,9 @@ class EnumSerializer(BaseSerializer):
def serialize(self):
enum_class = self.value.__class__
module = enum_class.__module__
- v_string, v_imports =
serializer_factory(self.value.value).serialize()
+ _, v_imports = serializer_factory(self.value.value).serialize()
imports = {'import %s' % module, *v_imports}
- return "%s.%s(%s)" % (module, enum_class.__name__, v_string),
imports
+ return "%s.%s['%s']" % (module, enum_class.__name__, self.value),
imports
}}}
@felixxm, what do you think?
--
Ticket URL: <https://code.djangoproject.com/ticket/30774#comment:6>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/062.74b345c21f5cbf1e31cec2b902c66768%40djangoproject.com.