Hi,
is it possible to set a default value to a widgets.options.widget?
model:
db = DAL('sqlite://storage.sqlite')
db.define_table('mytable',
Field('options_1', 'text', widget =
SQLFORM.widgets.options.widget ),
Field('options_2', 'text', widget =
SQLFORM.widgets.options.widget ))
db.mytable.options_1.requires = [IS_IN_SET(['option_1', 'option_2',
'option_3', 'option_4', 'unknown'], zero = None)]
db.mytable.options_2.requires = [IS_IN_SET(['option_1', 'option_2',
'option_3', 'option_4', 'unknown'], zero = None)]
controller:
from gluon.tools import Crud
def index():
crud = Crud(globals(), db)
if request.args(0):
values = db(db.mytable.id ==
request.args(0)).select(db.mytable.ALL)[0]
form = crud.update(db.mytable, request.args(0), onvalidation =
validate_values)
#####
# How to set the default value (<option value="unknown"
selected="selected">unknown</option>)
# mean stuff like
# if values.option_1 == None:
# db.mytable.option_1 = 'unknown'
# or
#
# if values.option_2 == None:
# form.custom.dspval.option_2 = 'unknown'
#
# This does not work properly! Any suggestions?
# Is it posible to create an optionswidget, which must not be
selected and can be empty?
#####
else:
values = None
form = crud.create(db.mytable)
return dict(form = form, values = values)
def validate_values(form):
for value in form.vars:
if form.vars[value] == 'unknown':
form.vars[value] = None
In this special case the user have to select 'unknown' if he didn't
know the value during record creation, but later (during update), the
user must not select a value, None values are automatically set to
unknown.
thanks
max