2017-04-12 69 views
0

我在db.py文件web2py中如何設置默認窗體值列表

PROFILE_TYPE=["cat1", "cat2", "cat3"] 

db.define_table('Item_Profile', 
       Field('uuid', 'string', requires=IS_NOT_EMPTY(), default=uuid.uuid4(), readable=False, writable=False), 
       ... 
       Field('documentType', 'string', requires=IS_IN_SET(PROFILE_TYPE), label="Select Profile for Document"), 
       auth.signature) 

我有一個「編輯」頁,我引用了模型和我正在嘗試設置默認值但有麻煩。到此爲止,該值已經被設置爲列表中的一個值。

document.py

db.document_profile.documentType.default = db.document_profile.documentType 

我估計這將需要從選項列表中設置的值,並把它作爲默認值...我通過將得到什麼

+1

你是什麼意思,「這一點,該值已經被設置爲列表中的一個值」? *已設置的值*請顯示相關代碼。請注意,'db.document_profile.documentType'是一個DAL'Field'對象 - 它不是一個值。 – Anthony

+0

那麼,如果記錄已經填滿了,我不認爲這會是一個好主意,因爲你會覆蓋舊的默認值,我猜這是因爲你說你有一個「編輯頁面」。如果你想設置一個默認值,你應該做** Field('documentType','string',requires = IS_IN_SET(PROFILE_TYPE),default ='來自PROFILE_TYPE的一些值')**。如果你真的需要設置一個新的默認值,那麼你應該在控制器中執行它,如下所示:** record = SQLFORM(db.Item_profile,request.args(0))record.vars.documentType ='一個新的默認值「**。我的兩分錢。 – deadPoet

回答

0

嘗試zero參數給驗證器。因此,用戶可以從列表中選擇一個,如果他們錯過了該步驟,表單將不被接受。

Field('documentType', 'string', 
     requires=IS_IN_SET(PROFILE_TYPE, zero='Select one'), 
     label="Select Profile for Document"),