python – WTForms:FormField的FieldList无法加载嵌套数据
发布时间:2020-12-20 13:44:02 所属栏目:Python 来源:网络整理
导读:我在FieldList中的FormField中有一个自定义字段:locations class LocationForm(Form): id = HiddenField('id') title = StringField(_l('Title'),[Required()]) location = CoordinatesField(_l('Coordinates'))class ProjectForm(Form): title = StringFie
我在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的正确方法是什么? 解决方法
我有同样的问题,并能够通过将列表展平为带有添加前缀的字典来对其进行排序.
就像是: document = { 'title': unicode,} locations = [{ 'id': uuid.UUID,'text':unicode} }] document.update({'locations-%s-%s' % (num,key): val for num,l in enumerate(locations) for key,val in l.items()}) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |