Web2py - SQLFORM.smartgrid:如何在提交前检索字段名称和值

时间:2016-08-02 13:55:41

标签: variables field edit web2py

我使用带有'网格'版本值的smartgrid。为此,我使用.represent函数将row_id添加到变量名称,以便我可以在request.post_vars中检索要更新的内容,在那里我可以使用提交的值检索已归档名称,ID的列表。 但我想确定用户在智能网格中发生的变化,而不在数据库中进行额外的I / O.是否存在全局变量,其中在用户更改之前记录表单字段和初始值?或者是在将表单字段和值发送到视图之前提取表单字段和值的函数?

1 个答案:

答案 0 :(得分:0)

db.define_table('cny',Field('f_cny')) 
def tst(): 
    tb = db.cny
    if len(request.post_vars) >0: 
        d = {} 
        for k,v in request.post_vars.iteritems(): 
            (f,sep,r) = k.partition('_r_') 
            if r:
                if not r in d:
                    d[r] = {}
                d[r][f] = v #should only be done if d[r][f] was changed!!!
                for r in d:
                    if len(d[r]): 
                        db(tb.id==r).update(**d[r]) 
    tb.f_cny.represent=lambda v,r:string_widget(tb.f_cny, v, **{'_name':'f_cny_r_%s' % r.id}) 
    f = SQLFORM.smartgrid(tb,
                          linked_tables=[],
                          selectable=(lambda ids:redirect(URL(request.controller,request.function,args=request.args))))
    return dict(f=f)