gpt4 book ai didi

python - WTForms:FormField 的 FieldList 无法加载嵌套数据

转载 作者:太空狗 更新时间:2023-10-30 01:28:57 56 4
gpt4 key购买 nike

我在 FieldList 中的 FormField 中有一个自定义字段:locations

class LocationForm(Form):
id = HiddenField('id')
title = StringField(_l('Title'), [Required()])
location = CoordinatesField(_l('Coordinates'))

class ProjectForm(Form):
title = StringField(_l('Title'))
manager = StringField(_l('Manager'))
description = StringField(_l('Description'))
locations = FieldList(FormField(LocationForm), min_entries=1)

此表单在提交后会保存到如下对象:

document = {
'title': unicode,
'description': unicode,
'manager': unicode,
'locations': [{
'id': uuid.UUID,
'title': unicode,
'location': {'coordinates':[float], 'text':unicode}
}],
}

当我尝试将数据加载到 GET 处理程序的表单中时,一切除了位置加载正常:

f = form(MultiDict(document))
f.locations.data
>> {'id':'','title':'','location':''}

我进行了一些调试,发现 WTForms 在将文档数据加载到表单时搜索“locations-0-location”,但搜索 MultiDict() 但该键不存在。 MultiDict 不会将字典列表转换为键“locations-i-...”。

为这种嵌套数据结构制作 WTForm 的正确方法是什么?

最佳答案

使用 WTFORMS 2.1

数据:

document = {
'title': unicode,
'description': unicode,
'manager': unicode,
'locations': [{
'id': uuid.UUID,
'title': unicode,
'location': {'coordinates':[float], 'text':unicode}
}],
}

您使用 WTFORMS 设置数据结构:

class LocationForm(Form):
id = HiddenField('id')
title = StringField(_l('Title'), [Required()])
location = CoordinatesField(_l('Coordinates'))

class ProjectForm(Form):
title = StringField(_l('Title'))
manager = StringField(_l('Manager'))
description = StringField(_l('Description'))
locations = FieldList(FormField(LocationForm), min_entries=1)

试试这个:

f = ProjectForm()
f.process(data=document)
f.locations.data

关于python - WTForms:FormField 的 FieldList 无法加载嵌套数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25203059/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com