首页 文章

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

提问于
浏览
0

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

1 回答

  • 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)
    

相关问题