У меня есть сайт Flask-SQLAlchemy, который использует тип перечисления SQLAlchemy для определенных столбцов, чтобы ограничить возможные входные значения.
Например, у меня есть перечисление "тип платежа", котороеимеет несколько вариантов типа оплаты, например:
class PaymentType(enum.Enum):
fixed = "fixed"
variable = "fixed_delivery"
quantity_discount = "quantity_discount"
Когда я использую это в раскрывающемся списке / выберите, я могу указать такие параметры, как:
prd_payment_type = SelectField(_('prd_payment_type'), choices=SelectOptions.PaymentTypes.All(0, _('PleaseSelect')))
Функция All ()Я звоню, возвращает различные значения перечисления в качестве параметров, а также добавляет пользовательский параметр «Пожалуйста, выберите ...» в раскрывающемся списке.Выглядит это так:
class PaymentTypes(object):
@staticmethod
def All(blank_value=None, blank_text=None):
ret = [(i.value, _(i.name)) for i in PaymentType]
SelectOption.add_blank_item(ret, blank_value, blank_text)
return ret
Пока все хорошо, я получаю хороший выпадающий список с правильными параметрами.проблема возникает, когда я хочу отобразить форму, используя уже существующий объект SQLAlchemy из базы данных.
Когда я выбираю объект из SQLAlchemy, свойство prd_payment_type содержит enum PaymentType.quantity_discount
, а не просто строковое значение «amount_discount»: ![enter image description here](https://i.stack.imgur.com/THKk4.png)
Поскольку WTForms (предположительно) соответствует предварительно выбранному параметру в раскрывающемся списке строковому значению «amount_discount»msgstr ", он не соответствует перечислению в модели SQLAlchemy, и опция не выбрана в раскрывающемся списке.
SelectField
WTForms принимает список кортежей, содержащих строки, как варианты.Я не могу кормить это своим перечислением.С другой стороны, модель SQLAlchemy возвращает тип перечисления в качестве свойства для prd_payment_type.Я мог бы переопределить это свойство или что-то в этом роде, но кажется, что для поддержки перечислений SQLAlchemy в WTForms требуется много работы.
Есть ли стандартное решение для работы с перечислениями SQLAlchemy в SelectField WTForms или я должен отказаться от использования перечислений вообще и просто хранить строки, может быть, из списка констант, чтобы контролировать их?