如何按名称从 WTF 表单中删除字段

问题描述 投票:0回答:3

我正在尝试从 wtf 表单中删除一些字段:

form = super().edit_form(obj=obj)
for f in form:
    if f.name not in self.form_details_columns:
        del f
return form

这种方法不起作用,但是如果我使用类似的方法

   del form.questin

question
是字段的名称,它有效

python flask-wtforms wtforms flask-admin
3个回答
1
投票

要按名称从 wtf 表单中删除一些字段,您可以使用以下代码:

form = super().edit_form(obj=obj)
for field_name in self.form_details_columns:
form._fields.pop(field_name, None)
return form

1
投票

您可以使用 del 语句删除一些 WTF 字段。我做的例子是...

from flask_wtf import FlaskForm
from wtforms import StringField, IntegerField

class MyForm(FlaskForm):
    name = StringField('Name')
    age = IntegerField('Age')

# Remove the "age" field from the form
form = MyForm()
del form.age

您也可以使用“弹出”来删除字段。 例子:

form._fields.pop('age')

0
投票

根据其他答案,我使用以下方法解决了它:

form = super().edit_form(obj=obj)
form_columns = [f.name for f in form]
for name in form_columns:
    if name not in self.form_details_columns:
        form._fields.pop(name, None)
return form
© www.soinside.com 2019 - 2024. All rights reserved.