2017-04-12 36 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"),