Not tested, but I'd do something like this...

#controller
def new_tank():
    db.container.type.writable = False
    db.container.type.readable = False
    db.container.type.default = 'tank'
    form = SQLFORM(db.container)
    if form.process().accepted:
        response.flash = 'New Question Successful'
    elif form.errors:
        response.flash = 'Oops there are errors'
    return dict(form=form)



On 12/9/2011 9:53 AM, lyn2py wrote:
For the code:

#model
db.define_table('container',
   Field('type','string',requires=IS_IN_SET(['cup','bowl','tank'])),
   Field('title', 'string', length=255)
   Field('description', 'text'),
)

#controller
def new_tank():
     form = SQLFORM(db.container)
     if form.process().accepted:
         response.flash = 'New Question Successful'
     elif form.errors:
         response.flash = 'Oops there are errors'
     return dict(form=form)

I want to set a default db.container.type in controller, in this case,
"tank".
i.e. the vars inserted into the db includes type="tank", but this is
not shown to the user filling up the form (I don't want it to be
tampered by the user).
It is a fixed value for type (in another function, it takes a
different fixed value)
How can I do this with form.process() or form.accepts()? (or other
better ways?)

Thanks!

Reply via email to