Python: SelectField " не является допустимым выбором"
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
, потому что все остальные числа могут быть заняты
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()