2,879

Flask-WTF的form下拉选择框默认值初始化

在flask开发过程中,有时候需要实现用户只能在我们预设的选项中选择数据,本文以一种添加商品类目为例讲解一下Form表单的数据初始化。Flask创建的表单结合前面提到的宏模板就可以批量创建类似的表单,唯一不同的就是表单的输入框的类型,多与少的区别,这样会大大提高效率。form代码如下:

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField, SelectField
from .models import Category

class SkueditForm(FlaskForm):
    SKU = StringField()
    name = StringField(label('_pro_name'))
    category = SelectField(label('_pro_cate'), coerce=int)
    submit = SubmitField(label('_update'))

    def __init__(self, *args):
        super(SkueditForm, self).__init__(*args)
        self.category.choices = [(category.id, category.name) for category in Category.query.all()]

上面的coerce=int这个属性很重要,不写的话,当表单提交到后台时,后台无法获取下拉框的值,数据初始化则用一个初始函数,并使用super()函数是用于调用父类(超类)的一个方法,super是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,并把继承父类表单,传入一个可变的参数,也可以传入多个可变参数(**args),然后就可以从数据库读取想要初始化的数据并赋值给下拉框就可以实现下拉框的数据初始化。

发表评论

邮箱地址不会被公开。 必填项已用*标注