Your model should have type as readable=False, writable=False and in the accepts part or via an onvalidation function you can set it to what you want.
You code seems strange though: - you are using the whole controller, not an action and view for it - returning the form inside response Any reason to do that?. On Nov 30, 11:59 am, hswolff <[email protected]> wrote: > I'm developing an application with web2py that asks a user to submit > text in a textarea, and after the user hits submit I want to parse the > input and assign a 'type' to the submission depending on the frequency > of a word used from the submitted text. > > Following is the associated code that I'm using. > > This is at the top of my controller/default.py: > try: > db.moment.user_id.default = auth.user.id > except: > pass > response.moment_form = SQLFORM(db.moment) > if response.moment_form.accepts(request.vars, > formname='moment_submit_form'): > response.flash = 'form accepted' > elif response.moment_form.errors: > response.flash = 'form has errors %s' % > response.moment_form.vars.type > > and the associated views/layout.html: > > {{if auth.is_logged_in():}} > <form method="post"> > <textarea class="text" cols="40" id="moment_content" > name="content" > rows="10"></textarea> > <input type="submit" value="Submit"> > <input type="hidden" name="type" value="worst" /> > <input type="hidden" name="_formname" > value="moment_submit_form" /> > </form> > {{else:}} > Sign in to play! > {{pass}} > > I've tried adding, just for debugging purposes: > db.moment.type.default = 'worst' > > To assign a static type after the form is submitted however that only > returns errors. > > I'm thinking using a component as described in chapter 13 of the book > would be the way to go but I was worried it wouldn't solve this issue, > so I posted this here.

