2014-01-24 48 views
0

我想使用SQLFORM.grid来显示项目的查询,并有一个布尔值字段,将显示为一个窗体上的复选框。我希望能够检查我想移动的项目的复选框。提交后,在数据库中进行更新,并执行将所选项目的图像文件复制到文件夹的特殊功能。Web2py没有显示编辑或更新

我的SQLFORM.grid显示正确与复选框,但我根本无法选中复选框。同样,我不确定我将如何拥有它,以便选定的项目将经历这两个步骤过程。

我甚至设置编辑=真上SQLFORM.grid 还设置db.items.isMoved.writeable =真

以下是我的代码:

型号:

db.define_table('items', 
    Field('itemNumber', 'id'), Field('numSold', 'integer'),       
    Field('imageName', 'string'), Field('isMoved','boolean') 
    Field('timeStamp', 'datetime')) 

控制器:

class VirtualProfitField(object): 
    def profit(self): 
    return "$" + str(self.items.price * self.items.numSold) 

db.items.virtualfields.append(VirtualProfitField()) 

def display_form(): 
    default_sort_order = [ebaydb.items.numSold] 
    db.items.timeStamp.readable = False 
    db.items.imageName.readable = False 

    query = (db.items.numSold > 100) 
    default_sort_order = [db.items.numSold] 
    form = SQLFORM.grid(query=query, orderby=default_sort_order, create=True, 
    deletable=True, editable=True, maxtextlength=64, paginate=25, csv=False, 
    links=[dict(header=T('Profit'),body=lambda row: row.profit), 
    dict(header=T('Image'), 
    body = lambda rowB: A(IMG(_src=URL('static', "images/images/"+ 
    rowB.imageName.replace('\\','/')), _width=50, _height=50), _href=URL('static', 
    "images/images/"+ rowB.imageName.replace('\\','/'))))] 

    if len(request.args) > 1 and ('edit' in request.args): 
    db.items.timeStamp.readable = False 
    db.items.imageName.writeable = False 

    return dict(form=form) 

“编辑”或“更新”按钮从不显示向上。

同样,我在哪里以及如何编码将选定的文件移动到另一个文件夹? 我能否获得检查项目的itemNumber和imageName?

非常感谢您的帮助!

约翰

PS:我感觉安东尼的存在......

+0

请重新格式化您的代码,以便在没有所有水平滚动的情况下读取它。 – Anthony

+0

所以上面的控制器是高清display_form() 在这里面,我加入request.args中 is_this_the_edit_page =“编辑” db.items.imageName.writeable =不is_this_the_edit_page 但它不会工作,每次我进入编辑。我打印出html中的request.arg,它在列表中显示“edit”。 我想这是在一个不同的函数单独的​​形式我的SQLFORM.grid?我在SQLFORM.grid之前和之后放置它,但它不起作用。 – user3211229

+0

这听起来像它应该工作。你可能不得不展示更多的代码(也许开始一个新的问题)。实际上,为什么不总是将该可写属性设置为False - 它只与编辑表单有关? – Anthony

回答

4

默认情况下user_signature=True,这意味着创建,编辑和删除,除非用户登录被禁用如果您想非已登录在用户能够完成这些操作时,请执行SQLFORM.grid(..., user_signature=False)

+0

再次感谢安东尼! – user3211229