我正在使用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语句,但是,它完全忽略了我在那里设置的可读性。
我应该在编辑页面中再次调用该表单吗? 我觉得这是多余的。
答案 0 :(得分:1)
要防止字段包含在编辑表单中,请将readable
和writable
属性都设置为False
。如果您将writable
设置为False
,但将readable
保留为True
,那么您将在表单上看到该字段的只读值。