【问题标题】:Python: SelectField "Not a valid choice"Python:SelectField“不是一个有效的选择”
【发布时间】:2017-04-25 07:42:29
【问题描述】:

form.py

class Confirm(CSRFForm):
    monitor_updates = SelectField(
        lazy_gettext("Monitor updates of an app"),
        validators=[validators.Optional()], choices=[], coerce=int
    )

view.py

def upload_confirm():
    form = Confirm()

    if form.validate_on_submit:
        if form.monitor_updates.data == 0:
            current_workflow.installation_source.monitor_updates_id = None
            db.session.commit()
        else:
            current_workflow.installation_source.monitor_updates_id = form.monitor_updates.data
            db.session.commit()

    choices = [(app[1][0], app[1][1]) for app in list_choices]
    form.monitor_updates.choices =[(0, "Nothing matches")]
    form.monitor_updates.choices += choices

models.py

class InstallationSource(db.Model):

    monitor_updates_id = db.Column(db.Integer, db.ForeignKey('updates_software.id'))

填写表单并在下拉菜单中选择“无匹配项”,值为 0 时,出现错误。

如果您选择不同的值,则保存正确。 我只能用0这个号码,因为其他号码都可以占用

【问题讨论】:

    标签: python flask wtforms flask-wtforms


    【解决方案1】:

    你需要选择的逻辑

        choices = [(app[1][0], app[1][1]) for app in list_choices]
        form.monitor_updates.choices =[(0, "Nothing matches")]
        form.monitor_updates.choices += choices
    

    form.validate_on_submit() 方法之前:

    def upload_confirm():
        form = Confirm()
    
        choices = [(app[1][0], app[1][1]) for app in list_choices]
        form.monitor_updates.choices =[(0, "Nothing matches")]
        form.monitor_updates.choices += choices
    
        if form.validate_on_submit():
            if form.monitor_updates.data == 0:
                current_workflow.installation_source.monitor_updates_id = None
                db.session.commit()
            else:
                current_workflow.installation_source.monitor_updates_id = form.monitor_updates.data
                db.session.commit()
    

    【讨论】:

    • 这非常有意义,因为更改只针对对象而不是类。
    猜你喜欢
    • 2019-01-14
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 2021-04-12
    相关资源
    最近更新 更多