- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在尝试使用 WTForms
的 FieldList
和 FormField
附件来允许用户添加具有相应覆盖范围的自定义位置子集数额。
该表单向用户提供一些标准输入,然后使用一组字段 (FormField) 进行初始化,每个字段都有一个位置选择输入和一个覆盖量输入。
Javascript 允许用户根据需要添加或删除额外的位置覆盖字段集以反射(reflect)准确的文档信息。
问题:作为一种解决方法,我一直在通过在表单处理程序的 GET 请求中传递模板变量并手动创建我自己的表单字段来设置位置选项。不过,这并没有更新实际的 WTForms 位置字段选择,因此当我提交表单时,位置字段会引发异常(“不是有效选择”)。
在实例化 MyForm
时,如何将位置选择动态添加到 LocationForm 的 location
字段?
我的代码基本上是这样的:
注意:我省略了在 GET 请求中创建位置模板变量的代码,因为这不是所需的设计。我想更符合预期的 WTForms 方法论:
class LocationForm(Form):
location = SelectField('Location', [], choices=[])
coverage = FloatField('Coverage', [])
class MyForm(BaseForm):
# other fields omitted for brevity
location_coverage = FieldList(FormField(LocationForm), [], min_entries=1)
class AddDocument(BaseHandler):
def get(self):
params = {
"cid": cid
}
return self.render_template("form.html", **params)
def post(self):
cid = self.request.get('cid')
if not self.form.validate():
return self.get()
company_key = ndb.Key('Company', cid)
doc = Document(parent=company_key)
self.form.populate_obj(doc)
doc.put()
params = {
"cid":
}
return self.redirect_to('view_company', **params)
@webapp2.cached_property
def form(self):
f = MyForm(self)
# HERE is where I would normally do something like:
# company = ndb.Key('Company', int(self.request.get('cid')))
# locations = ndb.Location.query(ancestor=company).fetch()
# f.field_name.choices = [(loc.key, loc.name) for loc in locations]
# but this doesn't work with Select Fields enclosed in
# FormFields and FieldLists.
return f
编辑:
我创建了一个解决方案,但这不是我要寻找的答案。在我的例子中,我只是将 LocationForm.location
表单字段从 SelectField 更改为 StringField。这样做会绕过选择字段选项的验证并允许提交表单。这不是理想的设计,因为它不是预期的设计,但如果有人能引导我在这个特定场景中以更合适的方式使用 WTForms,我将不胜感激。
最佳答案
如果您的 BaseForm 类在实例化时从发布数据填充表单,您应该会看到嵌套表单填充在您通常直接在表单上将选项添加到 SelectField 的位置。
因此像这样:
for entry in f.location_coverage.entries:
entry.location.choices = [(loc.key, loc.name) for loc in locations]
应该将选择填充到每个子表单选择字段中。
关于Python WTForms : How to dynamically set options of a SelectField in FieldList of FormFields?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23248211/
我对此有点疑问。以下是我创建的内容的概述:一个简单的表单,其中包含 2 个选择字段、1 个文件上传字段和一个提交按钮。第一个选择将从 sql 数据库中提取它的选择(我已经完成了)然后根据用户从 Sel
是否可以在material-ui中更改SelectField的弹出框背景颜色? 我 checkin 了生成的主题,但没有 selectField 或 popover 键。尝试更改menu的backgr
我只想获取公司的名称并将其保存到数据库 我正在尝试使用文本做,并尝试使用下面的代码来获取 sport: this.refs.company.getValue(), 并且运行完美。 然后我决定使用Sel
我有一个 SelectField,我想使用 WTForms 添加验证。这些字段从动态下拉列表中获取其值,因为它是一对区域/城市选择的城市字段,用户首先选择区域,然后城市选项切换以显示所选区域的城市:
我已经在表单字段的简单渲染上苦苦挣扎了近一天。如果您能在这方面帮助我,那就太好了。 我正在使用 Flask-WTF,python 2.7。 我正在尝试使用自定义 ListWidget 呈现 Selec
我对 Sencha 触摸选择字段更改事件感到震惊。通常的更改事件工作正常。但如果像这样的选项值, { xtype: 'selectfield', label: 'Choose on
首先,我最近才开始使用 Flask,所以我现在完全是个新手,但我喜欢它,希望能在以后的过程中提高我的技能。但是,我可能缺少一些非常基本的东西,例如:我创建了包含 selectfield 的表单: cl
我在表单中有一个选择字段,现在我需要迭代该字段中的选项。 {{ form.myselect }} 给我这个: --------- Item 1 Item 2 ...
我想创建一个自定义 SelectField,它根据当前日期提供不同的选择。例如,如果是该月的 13 日,则选项将为值 1 到 13。我该怎么做? def register_extensions(app
我对Python世界很陌生,我正在尝试将外部API与Google Apple引擎一起使用,我想使用填充有Api的json响应的selectField来验证表单。 这是我的代码 class Commen
有谁知道如何控制SelectField的popover的位置? 我知道 selectfield 在其中包含一个下拉菜单并且不包含弹出框,但认为也许可以以某种方式控制它。 最佳答案 我实际上遇到了同样的
我在提交时难以在 Flask 应用程序的 WTForms 页面中获取当前选定的项目。 form.tableselector.data 的值在提交时始终等于 1,无论 SelectField 中的哪个项
我正在实现一个简单的表单,其中包含用于收集数据的字段。我需要对一些字段(如文本字段、复选框和单选按钮)实现验证。 根据文档,要使用的属性是“errorText” 根据网站( http://www.ma
第一个问题:动态输入到 SelectField(选择)中,在我的数据库(sqlite,使用 SqlAlchemy)中,我有一个表,从这个表中我不会选择 SelectField 中的所有条目。作为选择的
如何在sencha touch中存储selectfield,这样当选择一个字段时,任何方法使用的值,但当页面刷新时,它会自动选择上一个选择。 我的代码: {
我正在制作一个表单,其中根据之前的选择启用和禁用了字段。但是,当我禁用 SelectField(意味着它未提交)时,验证会因“无效选择”而失败。即使未提交,如何让它验证? print(form.err
在使用 Flask/SQLalchemy 构建的应用程序中实现 WTForms SelectField 时,我遇到了许多错误。 相关代码如下: Views.py: form = ReviewForm(
我做了一个这样的 SelectField: # constants.py QUESTION_LIST = {} QUESTION_LIST['QuestionOne'] = { 'disagree-s
我正在 Sencha Touch 1.1 中创建一个带有两个级联选择字段的表单。 选择品牌后,模型列表将被过滤,以便仅显示与品牌相关的模型。第一次选择后,列表正确显示。 如果选择的另一个 Make 具
这有点难以解释,所以我正在尽力,如果我的问题含糊不清,请要求更清楚。 我正在使用商店中的选项填充选择字段。该表单显示在用户单击我的常规 ListView 中的一行时获得的详细 View 上。这一切都完
我是一名优秀的程序员,十分优秀!