Skip to content

Commit 7ab6adf

Browse files
committed
bring in changes from 1.3.1
1 parent e96000b commit 7ab6adf

File tree

4 files changed

+21
-5
lines changed

4 files changed

+21
-5
lines changed

django_enum/fields.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -519,6 +519,14 @@ def deconstruct(self) -> Tuple[str, str, List, dict]:
519519
if self.enum is not None:
520520
kwargs["choices"] = choices(self.enum)
521521

522+
if "db_default" in kwargs:
523+
try:
524+
kwargs["db_default"] = getattr(
525+
self.to_python(kwargs["db_default"]), "value", kwargs["db_default"]
526+
)
527+
except ValidationError:
528+
pass
529+
522530
if "default" in kwargs:
523531
# ensure default in deconstructed fields is always the primitive
524532
# value type

django_enum/tests/db_default/migrations/0001_initial.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
# Generated by Django 5.0.2 on 2024-03-02 16:48
1+
# Generated by Django 5.0.2 on 2024-03-03 01:51
22

3+
import django.db.models.functions.text
34
from django.db import migrations, models
45

56
import django_enum.fields
6-
import django_enum.tests.djenum.enums
77

88

99
class Migration(migrations.Migration):
@@ -144,7 +144,9 @@ class Migration(migrations.Migration):
144144
("V333", "Value3"),
145145
("D", "Default"),
146146
],
147-
db_default="db_default",
147+
db_default=django.db.models.functions.text.Concat(
148+
models.Value("db"), models.Value("_default")
149+
),
148150
default="",
149151
max_length=10,
150152
),
@@ -184,7 +186,7 @@ class Migration(migrations.Migration):
184186
django_enum.fields.EnumPositiveSmallIntegerField(
185187
blank=True,
186188
choices=[(1, "ONE"), (2, "TWO"), (3, "THREE")],
187-
db_default=django_enum.tests.djenum.enums.ExternEnum["THREE"],
189+
db_default=3,
188190
null=True,
189191
),
190192
),

django_enum/tests/db_default/models.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
from django.db import models
2+
from django.db.models.expressions import Value
3+
from django.db.models.functions import Concat
24
from django.urls import reverse
35

46
from django_enum import EnumField
@@ -38,7 +40,7 @@ class DBDefaultTester(models.Model):
3840
doubled_text = EnumField(
3941
TextEnum,
4042
default="",
41-
db_default="db_default",
43+
db_default=Concat(Value('db'), Value('_default')),
4244
blank=True,
4345
max_length=10,
4446
strict=False,

doc/source/changelog.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ v2.0.0
1616
* Fixed `When coerce is false, to_python does not convert to the Enum's primitive type <https://github.com/bckohan/django-enum/issues/39>`_
1717
* Fixed `None should be an allowable enumeration value in enums of any primitive type. <https://github.com/bckohan/django-enum/issues/42>`_
1818

19+
v1.3.1
20+
======
21+
22+
* Fixed `db_default produces expressions instead of primitives when given enum value instances. <https://github.com/bckohan/django-enum/issues/59>`_
1923

2024
v1.3.0
2125
======

0 commit comments

Comments
 (0)