Skip to content

Commit 0d0cc8e

Browse files
committed
Fix for callable enum field default
1 parent b918ae8 commit 0d0cc8e

File tree

2 files changed

+6
-10
lines changed

2 files changed

+6
-10
lines changed

enumfields/fields.py

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,16 +76,10 @@ def value_to_string(self, obj):
7676
return str(value.value) if value is not None else ''
7777

7878
def get_default(self):
79-
if self.has_default():
80-
if self.default is None:
81-
return None
82-
83-
if isinstance(self.default, Enum):
84-
return self.default
85-
86-
return self.enum(self.default)
87-
88-
return super().get_default()
79+
default = super().get_default()
80+
if default is not None and self.has_default():
81+
default = self.enum(default)
82+
return default
8983

9084
def deconstruct(self):
9185
name, path, args, kwargs = super().deconstruct()

tests/models.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ class MyModel(models.Model):
1212
taste = EnumField(Taste, default=Taste.SWEET)
1313
taste_not_editable = EnumField(Taste, default=Taste.SWEET, editable=False)
1414
taste_null_default = EnumField(Taste, null=True, blank=True, default=None)
15+
taste_callable_enum_default = EnumField(Taste, default=lambda: Taste.SWEET, editable=False)
16+
taste_callable_value_default = EnumField(Taste, default=lambda: Taste.SWEET.value, editable=False)
1517
taste_int = EnumIntegerField(Taste, default=Taste.SWEET)
1618

1719
default_none = EnumIntegerField(Taste, default=None, null=True, blank=True)

0 commit comments

Comments
 (0)