【问题标题】:Web2py SQLFORM.grid Edit pageWeb2py SQLFORM.grid 编辑页面
【发布时间】:2014-01-30 04:25:56
【问题描述】:

我正在为我的表单使用 SQLFORM.grid。视图显示正常,我可以隐藏字段。但是当我进入编辑页面时,我希望某些字段不可读且不可写。在 SQLFORM.grid 调用之前以及在 request.args == 'edit' 中,我已将其设置为 readable=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 语句,但是,它完全忽略了我在那里设置的可读性。

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

【问题讨论】:

    标签: forms web2py


    【解决方案1】:

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

    【讨论】:

    • 我在某些字段上设置了 writeable and readable = False 并将它们放在 if 语句之后。它仍然不起作用:如果 len(request.args) > 1 and ('edit' in request.args): db.items.timeStamp.readable = False db.items.timeStamp.writeable = False db.items.imageName .readable = False db.items.imageName.writeable = False
    • 哦,我的#*$*#!!!!答案是我使用“可写”作为我的拼写而不是“可写”!我不明白为什么我一直拼错错误时不会抛出错误。再次感谢您的回答,安东尼!
    • 抱歉,我没有注意到拼写错误。我认为两者都是可接受的英文拼写,但 web2py 选择了“可写”。不会引发异常,因为在 Python 中,您可以向对象添加任意属性(除非特别禁止)。也许我们应该在“可写”的特定情况下引发异常,因为这是一个常见错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 2012-04-02
    • 2013-05-11
    相关资源
    最近更新 更多