所有权的表单,获取嵌入的表单字段的语法

2024-09-30 12:13:08 发布

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

尝试使用从mongodb数据库中提取的数据填充一个Wtform表单字段,然后将其交给jinja/flask,为我正在构建的REST系统创建一个可编辑的预填充表单。在

我的表单结构:

class ProjectForm(Form):
    name = TextField("Name of Project")     
    workflow =FieldList(TextField(""), min_entries=5)

class InstituteForm(Form):
    institue_name = TextField("Name of Institue")
    email = FieldList(TextField(""), min_entries=3)
    project_name = FormField(ProjectForm)
    submit = SubmitField("Send")`

我可以使用以下语法预填充字段列表:

^{pr2}$

但是,我无法计算出预填充包含表单对象的FormField的语法。在

首先,我创建一个项目表单:

p = ProjectForm(name=" test", workflow=["adadadad", "adasdasd", "adasdadas"])

现在我正试图将其添加到InstituteForm窗体中。在

我试过:

form = InstituteForm(institue_name=store_i,
                     project_name=p,
                     email=store_email)

我得到html输出:

上载的示例输出[http://tinypic.com/r/jpfz9l/5],没有足够的点数来发布图像到堆栈溢出。在

我试过语法,比如:

form = InstituteForm(institue_name=store_i,
                     project_name.name=p,
                     email=store_email)

以及

form = InstituteForm(institue_name=store_i,
                     project_name=p.name,
                     email=store_email)

甚至

form = InstituteForm(institue_name=store_i,
                     project_name=ProjectForm(name="this is a test"),
                     email=store_email)

搜索并找到另一个类似问题的线索(没有回复):

Using FieldList and FormField


Tags: storenameformproject表单email语法class
1条回答
网友
1楼 · 发布于 2024-09-30 12:13:08

project_namecan be dict or object(不是form对象,因为它将用html标记值填充InstituteForm.project_name),因此可以使用下一个代码:

form = InstituteForm(institue_name="cambridge",
                     project_name=dict(name="test name"),
                     email=["email@gmail", "email@gmail"])

或者

^{pr2}$

或者

class Project(object):
    name = "test"
    workflow = ["test1", "test2"]

class Institute(object):
    institue_name = "cambridge"
    project_name = Project()
    email = ["email@gmail", "email@gmail"]

form = InstituteForm(obj=Institute())

这个示例是等效的,因为WTForms使用了带有obj参数和**kwargs的构造函数,这两个参数在本例中的工作方式类似。在

相关问题 更多 >

    热门问题