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

python – WTForms:FormField的FieldList无法加载嵌套数据,第1张

概述我在FieldList中的FormField中有一个自定义字段:locations class LocationForm(Form): id = HiddenField('id') title = StringField(_l('Title'), [Required()]) location = CoordinatesField(_l('Coordinates'))cl 我在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()})
总结

以上是内存溢出为你收集整理的python – WTForms:FormField的FieldList无法加载嵌套数据全部内容,希望文章能够帮你解决python – WTForms:FormField的FieldList无法加载嵌套数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1197127.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存