您好我有ajax将数据发布到我的控制器,如下所示:
<Storage {'transaction_charge': ['1100', '1100'], 'min_amount': ['10000', '20001'], 'max_amount': ['20000', '50000'], 'admin_charge': ['1500', '3000'], 'other_charge': ['30', '60']}>
我可以正确的将其转换为键值列表如下的字典
{'transaction_charge': ['1100', '1100'], 'min_amount': ['10000', '20001'], 'max_amount': ['20000', '5000'], 'admin_charge': ['1400', '3000'], 'other_charge': ['80', '70']}
我还有一个数据库表,其名称与上述数据集中的键名相匹配,我想将其发布到数据库中,以使每个列表值在数据库中创建一个新记录,例如:
id | min_amount | max_amount | admin_charge | transaction_charge | other_charge
1 | 10000 | 20000 | 1500 | 1100 | 30
2 | 20001 | 50000 | 3000 | 1100 | 60
注意我的表字段是动态的,如果用户添加其他费用类型,它们可能会更改,所以我不想显式添加这些记录,web2py是否可以聪明地读取这些键并将其列表值映射到某种循环中的表列,以便它len(ajax_data['key')在数据库中创建记录?
谢谢 问题来源: stackoverflow
好吧,web2py有一种过滤字典的好方法,使其仅包含与表字段匹配的键:_filter_fields
您需要将已发布的数据从列表的字典转换为字典的列表,例如:
data = [
{
'transaction_charge': '1100',
'min_amount': '10000',
'max_amount': '20000',
'admin_charge': '1400',
'other_charge': '80',
},
{
'transaction_charge': '1100',
...
}
]
然后,您可以循环,过滤和插入:
for row in data:
db.table_name.insert(**db.table_name._filter_fields(row))
回答来源: stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。