我的应用程序是通过ajax(onblur)将来自表单元素的少量信息提交给控制器my_function
。
request.vars是<Storage {'my_field': 'the submitted data'}>
。
我知道可以使用表中的db.table(id).update_record(the_field = 'text')
ifthe_field
域更新记录。
但是我尝试将field_name和data传递给该update_record()
函数:
def my_function():
keys = request.vars.keys()
field_name = keys[0] # -> The field name to be updated
content_id = int(request.args(0)) # -> The record id to be updated
db.my_table(content_id).update_record(field_name = request.vars[field_name])
哪个不起作用:SyntaxError: No fields to update
。如果我对进行硬编码,那是可行的field_name
。有什么我想念的吗?
您可以使用Python的关键字参数解包语法(即,将参数作为字典传递,将其解压缩为关键字参数及其值):
db.my_table(content_id).update_record(**{field_name: request.vars[field_name]})
实际上,该表具有一种_filter_fields
方法,该方法采用类似于字典的对象并将其过滤为仅包含在表中的id
字段(不包括该字段)。因此,如果可能有多个字段要更新,则可以执行以下操作:
db.my_table(content_id).update_record(**db.my_table._filter_fields(request.vars))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句