如何从动态WTForm生成子类?

2024-09-28 15:02:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个窗体,它有一个动态创建的部分和一个静态部分。所以我想把。。。但我不知道如何处理动态创建的表单。 我以这种方式创建动态窗体:

来自视图.py

def create_legumes_form_class(legumes):
form_fields={}    
for legume in legumes:
    field_id = 's_{}'.format(legume.id)
    form_fields[field_id] = IntegerField(default=0 , validators = [InputRequired()])
return type('OrderForm', (Form,), form_fields)

然后在my view函数中实例化窗体:

legumes = Legumes.query.filter_by(disponible = True).all()
OrderForm = create_legumes_form_class(legumes)
form = OrderForm()

但是对于这个OrderForm(),我需要添加一对布尔字段,它们总是相同的(即不是从查询中动态创建的)。你知道吗

所以我尝试在中添加一个(静态)表单表单.py并在view函数中这样实例化:

form=OrderForm(StaticForm)

但我现在

    TypeError: formdata should be a multidict-type wrapper that supports the 'getlist' method

我也不知道该从这里把它带到哪里去! 我做错了什么/没做什么?你知道吗


Tags: pyformid表单fieldfieldstypecreate
1条回答
网友
1楼 · 发布于 2024-09-28 15:02:42

不能将另一个类传递给OrderForm构造函数并使其子类化该类。但是,您可以在调用type时提供它。你知道吗

return type('OrderForm', (Form, StaticForm), form_fields)

如果StaticForm子类Form,这可以进一步简化。你知道吗

return type('OrderForm', (StaticForm,), form_fields)

相关问题 更多 >