Web2py SQLFORM.grid编辑页面

时间:2014-01-30 04:25:57

标签: forms web2py

我正在使用SQLFORM.grid作为我的表单。视图显示正常,我可以隐藏字段。但是当我进入编辑页面时,我希望某些字段不可读且不可写。我在SQLFORM.grid调用之前以及request.args =='edit'中将它设置为可读= False。我可以确认它检测到编辑页面,但由于某种原因,它不会运行读写。

以下是控制器:

def display_form():
  db.items.timeStamp.readable = False
  db.items.imageName.readable = False
  db.items.isCopied.writeable = True

  query = (db.items.numSold > 100)    

  default_sort_order = [db.items.numSold]


  if len(request.args) > 1 and ('edit' in request.args):        
      db.items.timeStamp.readable = False
      db.items.imageName.writeable = False
      form = SQLFORM.grid(query=query, orderby=default_sort_order, create=False, 
        deletable=False, editable=True, maxtextlength=64, paginate=25, csv=False, 
        user_signature=False,
        links=[dict(header=T('Profit'),body=lambda row: row.profit), 
        dict(header=T('Image'), body = lambda rowB: A(IMG(_src=URL('static', "images/"+ 
              rowB.imageName.replace('\\','/')), _width=50, _height=50), 
              _href=URL('static', "images/"+ rowB.imageName.replace('\\','/'))))], 
              selectable=get_chosenItems
              )
  else:        
      form = SQLFORM.grid(query=query, orderby=default_sort_order, create=False, 
        deletable=False, editable=True, maxtextlength=64, paginate=25, csv=False, 
        user_signature=False,
        links=[dict(header=T('Profit'),body=lambda row: row.profit), 
        dict(header=T('Image'), body = lambda rowB: A(IMG(_src=URL('static', "images/"+ 
              rowB.imageName.replace('\\','/')), _width=50, _height=50), 
              _href=URL('static', "images/"+ rowB.imageName.replace('\\','/'))))], 
              selectable=get_chosenItems
                            )

return dict(form=form)

我可以说,在编辑页面上,它会进入if语句,但是,它完全忽略了我在那里设置的可读性。

我应该在编辑页面中再次调用该表单吗? 我觉得这是多余的。

1 个答案:

答案 0 :(得分:1)

要防止字段包含在编辑表单中,请将readablewritable属性都设置为False。如果您将writable设置为False,但将readable保留为True,那么您将在表单上看到该字段的只读值。