2014-01-24 49 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