Commit c0a71e26 authored by Timothée Jeannin's avatar Timothée Jeannin

Make the Select2Field coerce enum values to their name in case of a SQLAlchemy Enum column.

Fixes #1315.
parent 874d2b76
import warnings import warnings
from enum import Enum
from wtforms import fields, validators from wtforms import fields, validators
from sqlalchemy import Boolean, Column from sqlalchemy import Boolean, Column
...@@ -9,7 +10,7 @@ from flask_admin.model.form import (converts, ModelConverterBase, ...@@ -9,7 +10,7 @@ from flask_admin.model.form import (converts, ModelConverterBase,
from flask_admin.model.fields import AjaxSelectField, AjaxSelectMultipleField from flask_admin.model.fields import AjaxSelectField, AjaxSelectMultipleField
from flask_admin.model.helpers import prettify_name from flask_admin.model.helpers import prettify_name
from flask_admin._backwards import get_property from flask_admin._backwards import get_property
from flask_admin._compat import iteritems from flask_admin._compat import iteritems, text_type
from .validators import Unique from .validators import Unique
from .fields import (QuerySelectField, QuerySelectMultipleField, from .fields import (QuerySelectField, QuerySelectMultipleField,
...@@ -281,6 +282,7 @@ class AdminModelConverter(ModelConverterBase): ...@@ -281,6 +282,7 @@ class AdminModelConverter(ModelConverterBase):
accepted_values.append(None) accepted_values.append(None)
field_args['validators'].append(validators.AnyOf(accepted_values)) field_args['validators'].append(validators.AnyOf(accepted_values))
field_args['coerce'] = lambda v: v.name if isinstance(v, Enum) else text_type(v)
return form.Select2Field(**field_args) return form.Select2Field(**field_args)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment