flask wtf 的select报错Not a valid choice

parent_id = SelectField('parent_id', validators = [InputRequired()])

这句报错Not a valid choice

需要设置coerce = int

parent_id = SelectField('parent_id', coerce = int, validators = [InputRequired()])
class TaxonForm(FlaskForm):
  name = StringField('name', validators = [DataRequired('请输入名称')])
  parent_id = SelectField('parent_id', coerce = int, validators = [InputRequired()])
  sort = IntegerField('sort')

当我设置好后又报错

invalid literal for int() with base 10: ''

这是习惯使然,一般在做select是,习惯把第一值设置位空,单wtf比较死板,所需需要设置位数字

form.parent_id.choices.insert(0, ('', '请选择'))
form.parent_id.choices.insert(0, (-1, '请选择'))

也可以这样写

form.parent_id.choices = [(-1,'请选择'), (0, '顶级栏目')] + [(g.id, g.name) for g in find_taxons()]

 

'''
new
'''
@bp.route('/new')
def new():
  form = TaxonForm()
  form.parent_id.choices = [(g.id, g.name) for g in find_taxons()]
  form.parent_id.choices.insert(0, (-1, '请选择'))
  form.parent_id.choices.insert(1, (0, '顶级栏目'))
  
  return render_template('backend/taxon/create.html', form = form)

'''
create
'''
@bp.route('/create', methods = ('POST',))
def create():
  form = TaxonForm()
  form.parent_id.choices = [(g.id, g.name) for g in find_taxons()]
  form.parent_id.choices.insert(0, (-1, '请选择'))
  form.parent_id.choices.insert(1, (0, '顶级栏目'))

  if form.validate():
    name = request.form['name']
    parent_id = request.form['parent_id']
    sort = request.form['sort']
    print(name)

    # create taxon
    model = Taxon(name, parent_id, sort)
    db.session.add(model)
    db.session.commit()
    flash('提交成功')
    return redirect( url_for('taxon.index') )

  return render_template('backend/taxon/create.html', form = form)

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值