Flask Babel插入数据库时 转换为原始语言

问题描述 投票:0回答:1

我有一组带有Flask-WTF的SelectField,并且我用Flask-Babel转换了默认语言。

这是我的代码段:

from flask_babel import _, lazy_gettext as _l

class PaymentStatus(enum.Enum):
    PENDING = _l('PENDING')
    COMPLETED = _l('COMPLETED')
    EXPIRED = _l('EXPIRED')

    def __str__(self):
        return '{}'.format(self.value)

payment_status = [(str(_l(y)), y) for y in (PaymentStatus)]

class PaymentForm(FlaskForm):
    status_of_payment = SelectField(_l('Payment Status'), choices=payment_status)
    # ...
    # ...

这是我的模型:

class Payment(db.Model):
    __tablename__ = 'payment'
    id = db.Column(db.Integer, primary_key=True)
    status_of_payment = db.Column(db.Enum(PaymentStatus, name='status_of_payment'))
    # ...
    # ...

并且当我尝试将Flask-WTF表单中的值插入到数据库中时,出现了一些错误。

这是我如何将其插入数据库的代码段:

if form.validate_on_submit():
    payment = Payment(
        # payment_status=form.status_of_payment.data
        payment_status=PaymentStatus.PENDING.value
        # ...
        # ...
    )

enum PENDING的值也转换为浏览器上首选语言的语言,所以我收到了此错误消息:

sqlalchemy.exc.StatementError:(builtins.LookupError)“ MENGUNGGU”为不在定义的枚举值中

有关更多信息:“ MENGUNGGU” =是英语中“ PENDING”的印度尼西亚语言。

所以这里的问题是,当我插入SelectField值时,它还将语言转换为我的首选浏览器语言,而我的数据库[阻止了它,因为我没有在我的枚举类型。

所以,我的问题是,当我们想将i18n和l10n值插入数据库时​​是否可以将其排除在数据库之外?或者我应该怎么做才能解决这个问题。 ?

我有一组带有Flask-WTF的SelectField,并使用Flask-Babel转换了默认语言。这是我的代码段:从flask_babel import _,lazy_gettext as _l class PaymentStatus(...

python flask babel flask-babel
1个回答
2
投票
© www.soinside.com 2019 - 2024. All rights reserved.