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()})总结
以上是内存溢出为你收集整理的python – WTForms:FormField的FieldList无法加载嵌套数据全部内容,希望文章能够帮你解决python – WTForms:FormField的FieldList无法加载嵌套数据所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)