- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我们有以下表单,我们正在尝试为每个组创建 GroupRoleForms
列表。
class FullNameMixIn():
full_name = TextField(
'Full name', [
validators.required(message=u"Full name is required")
])
class GroupRoleForm(Form):
group =BooleanField('Group', default=False)
role = SelectField(
'Role',choices=[
("none", "----------"),
('approver', 'Approver'),
('editor', 'Editor')
])
class AdminEditUserForm(Form, FullNameMixIn):
group_roles = FieldList(FormField(GroupRoleForm))
我们如何创建一个包含预先填充的 GroupRoleForms
列表的 AdminEditUserForm
实例?
目前我们正在尝试这样做:
form = forms.AdminEditUserForm()
for group in company.groups:
group_role_form = forms.GroupRoleForm()
group_role_form.group.label = group.name
group_role_form.group.name = group.id
form.group_roles.append_entry(group_role_form)
return dict(edit_user_form = form )
最佳答案
在 data
或 formdata
关键字参数中,Form
您只需要一个带有 key
的字典匹配包含可迭代对象的 FieldList
子字段。该可迭代需求中的项目又具有与 FieldList
的字段列表匹配的属性的项目。
如果您按照下面的示例操作,我会得到预填充的嵌套表单。
from collections import namedtuple
from wtforms import validators
from wtforms import Form
from wtforms import SelectField
from wtforms import BooleanField
from wtforms import TextField
from wtforms import FieldList
from wtforms import FormField
from webob.multidict import MultiDict
# OP's Code
class FullNameMixIn():
full_name = TextField(
'Full name', [
validators.required(message=u"Full name is required")
])
class GroupRoleForm(Form):
group =BooleanField('Group', default=False)
role = SelectField(
'Role',choices=[
("none", "----------"),
('approver', 'Approver'),
('editor', 'Editor')
])
class AdminEditUserForm(Form, FullNameMixIn):
group_roles = FieldList(FormField(GroupRoleForm))
# create some groups
Group = namedtuple('Group', ['group', 'role'])
g1 = Group('group-1', 'none')
g2 = Group('group-2', 'none')
# drop them in a dictionary
data_in={'group_roles': [g1, g2]}
# Build form
test_form = AdminEditUserForm(data=MultiDict(data_in))
# test print
print test_form.group_roles()
<ul id="group_roles">
<li>
<label for="group_roles-0">Group Roles-0</label>
<table id="group_roles-0">
<tr>
<th><label for="gr
oup_roles-0-group">Group</label></th>
<td><input checked id="group_roles-0-group" name="group_roles-0-group" type="checkbox" value="y"><
/td>
</tr>
<tr>
<th><label for="group_roles-0-role">Role</label></th>
<td>
<select id="group_roles-0-role" name="group_roles-0-role">
<option
selected value="none">----------</option>
<option value="approver">Approver</option>
<option value="editor">Editor</option>
</select>
</td
>
</tr>
</table>
</li>
<li>
<label for="group_roles-1">Group Roles-1</label>
<table id="group_roles-1">
<tr>
<th><label for="group_roles-1-gro
up">Group</label></th>
<td><input checked id="group_roles-1-group" name="group_roles-1-group" type="checkbox" value="y"></td>
</tr>
<tr>
<t
h>
<label for="group_roles-1-role">Role</label></th>
<td>
<select id="group_roles-1-role" name="group_roles-1-role">
<option selected value
="none">----------</option>
<option value="approver">Approver</option>
<option value="editor">Editor</option>
</select>
</td>
</tr>
</table>
<
/li>
</ul>
...
关于python - 使用 FieldList 和 FormField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12040688/
我正在使用 Flask 和 Flask-WTF,我需要创建一个包含多个具有相似结构的 block (子表单)的表单(例如具有一个 SelectField 和一个 TextAreaField 的子表单)
我想以特定顺序检索对象中的字段。我找到了一种使用反射来检索字段的方法,但不能保证每次都以相同的顺序返回字段。这是我用来检索字段的代码: ReleaseNote rn = new ReleaseNote
我有以下表格, class AddForm(wtf.Form): tags = TagListField("Tags (comma separated)", validators=[wtf.R
我使用 WTForms FieldList字段列表的字段。它获取这些输入字段的值,这些值按它们在 form.data 中的名称排序。但我想按照它们在表单中出现的顺序获取值。覆盖 process 函数是
wtforms FieldList && 验证出现问题...应该说该字段必须有Int值,而不是This field is required为什么 f.data 具有 [None, 2, None] 值
将FieldList与WTForms一起使用时,通过验证时遇到麻烦。我不断收到此错误。 {'csrf_token': [u'CSRF token missing']}。问题是,如果我在FieldLis
我正在使用 WTForm 来验证我直接从 javascript 模型提交的表单(通过挖空填充)。在我的表单中,我有一个可以动态添加/删除的银行帐户列表。在 python 方面,我有这样的东西: cla
我有这个订单表格,允许我的用户创建订单。一个订单由 (producetype, quantity) 的多个元组组成. Producetype 应在 中呈现形式而数量可以只是一个输入。 produce
我有一个 flask + wtforms 应用程序,我希望用户能够在其中输入父对象和任意数量的子对象。我不确定从用户界面动态创建新子表单输入字段的最佳方式是什么。 到目前为止我得到了什么 下面是一个完
我们有以下表单,我们正在尝试为每个组创建 GroupRoleForms 列表。 class FullNameMixIn(): full_name = TextField( 'F
我在 Filling WTForms FormField FieldList with data results in HTML in fields 上看到了同样的奇怪行为我的原始字段使用 HTML
这个问题已经有答案了: How to populate wtform select field using mongokit/pymongo? (2 个回答) 已关闭 4 年前。 类似于这个问题: D
我在 FieldList 中的 FormField 中有一个自定义字段:locations class LocationForm(Form): id = HiddenField('id')
我有一个带有 flask-wtf 的表单用于上传图片,文件字段也可以多个字段。 我的表单: class ComposeForm(Form): attachment = FieldList(Fi
我正在使用 Flask 构建网站我在其中使用 WTForms .在 Form 中,我现在想使用 FormFields 的 FieldList,如下所示: class LocationForm(Form
我正在尝试使用 WTF 字段、FormField、FieldList 创建一个 ListItem 表单: forms.py class WarehouseTicketItemForm(Form):
确实缺乏有关如何使用 WTForms 的 FieldList 的文档。因此,多亏了互联网,我才能够将以下内容组合在一起: 表格: class BranchForm(Form): name =
我正在尝试创建一个动态表单(在 python Flask 应用程序中)使用WT 表格。 WTForms 包含一个用于字段列表的 FieldList 字段。我想用它来制作一个表单,用户可以在其中添加或删
我想生成带有复选框的文件列表。我试过使用 FieldList 但它没有像我预期的那样工作。我得到的不是带有指定文件名的复选框,而是带有以包含 FieldList 对象的变量命名的标签的复选框。有什么办
我有一个 Flask 应用程序,我可以通过上传一个 CSV 文件来填充表单数据,然后读取该文件。我想用从 CSV 读取的数据填充一个 FieldList。但是,当我尝试填充数据时,它会将原始 HTML
我是一名优秀的程序员,十分优秀!