|
@@ -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},
|
|
|
)
|
|
|
|