首页 > 解决方案 > Flask-WTF 实例化嵌套表单

问题描述

我有类似这样的嵌套表格:

class PhoneForm(FlaskForm):
    number = StringField('Phone Number')
    valid_since = None

class AdressForm(FlaskForm):
    phone_number = FormField(PhoneForm)
    city = SelectForm('City')
    name = StringField('Name')

我现在已经摆弄了几个小时,但我找不到一种方法来根据我的需要设置表格。我试过覆盖构造函数并使用静态方法

def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.name.data = 'Kevin123'
        self.phone_number = PhoneForm()

    @staticmethod
    def create_form():
        form = AdressForm()
        form.name.data = 'Kevin'
        form.phone_number = PhoneNumber.create_form()  # calls the creator method of the other form
        return form

我的实际应用程序比这大得多,所以我需要一种方法来自己创建表单(为选择字段设置数据或选项),然后将它们添加到嵌套表单中。

从我读到的将数据传递到 Flask-WTF 中的表单的唯一方法是 form = AdressForm(phone_number='123456'):没有其他方法真正起作用或使表单“不可提交”(即提交后数据不会发生变化。

有没有办法在 Flask-WTF 中做到这一点,或者我必须用常规的 WTforms 尝试它。

谢谢 :)

标签: pythonformsflaskflask-wtformswtforms

解决方案


如果我了解您的情况,我认为您需要删除 init 内容。这是您的处理程序的一些代码(与表单交互的 Python 方法):

@app.route('/adress', methods=['GET', 'POST'])
def data():
    form = forms.AdressForm()
    form.phone_number.number.data = '888.888.8888'
    form.phone_number.valid_since.data = '1984'

这会让你开始吗?


推荐阅读