mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Fixed #33916 -- Added support for serialization of enum.Flag in migrations.
This commit is contained in:
committed by
Mariusz Felisiak
parent
b30c0081d4
commit
16fffc829c
@@ -16,7 +16,7 @@ from django.db import models
|
||||
from django.db.migrations.operations.base import Operation
|
||||
from django.db.migrations.utils import COMPILED_REGEX_TYPE, RegexObject
|
||||
from django.utils.functional import LazyObject, Promise
|
||||
from django.utils.version import get_docs_version
|
||||
from django.utils.version import PY311, get_docs_version
|
||||
|
||||
|
||||
class BaseSerializer:
|
||||
@@ -125,8 +125,21 @@ class EnumSerializer(BaseSerializer):
|
||||
def serialize(self):
|
||||
enum_class = self.value.__class__
|
||||
module = enum_class.__module__
|
||||
if issubclass(enum_class, enum.Flag):
|
||||
if PY311:
|
||||
members = list(self.value)
|
||||
else:
|
||||
members, _ = enum._decompose(enum_class, self.value)
|
||||
members = reversed(members)
|
||||
else:
|
||||
members = (self.value,)
|
||||
return (
|
||||
"%s.%s[%r]" % (module, enum_class.__qualname__, self.value.name),
|
||||
" | ".join(
|
||||
[
|
||||
f"{module}.{enum_class.__qualname__}[{item.name!r}]"
|
||||
for item in members
|
||||
]
|
||||
),
|
||||
{"import %s" % module},
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user