Python:选择字段"Not a valid choice"
Python: SelectField "Not a valid choice"
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'))
当填写表格并在下拉列表中 selecting "Nothing matches" 值为 0 时,出现错误。
如果你select一个不同的值,保存是正确的。
我只能用数字0
,因为其他数字都可以被占用
你需要选择的逻辑
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()
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'))
当填写表格并在下拉列表中 selecting "Nothing matches" 值为 0 时,出现错误。
如果你select一个不同的值,保存是正确的。
我只能用数字0
,因为其他数字都可以被占用
你需要选择的逻辑
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()