One problem is that you want to select after you process the form:

def workouts():
    r = db.workouts(request.args(0))
    form = SQLFORM(db.workouts, r).process()

    if form.accepted:
       response.flash = 'form accepted'
    elif form.errors:
       response.flash = 'form has errors'

    rows = db(db.workouts).select()
    return locals()

Also instead of using a custom form (unless you really need one), I suggest 
you do {{=form}} in view and 

make the fields that you do not need in the form Field(..., readable=False, 
writable=False)

On Saturday, 9 August 2014 20:01:51 UTC-5, Drew Howell wrote:
>
> I'm new to Web2Py, so I am creating a (what I thought was a) simple app 
> that tracks progress of a workout routine. I have a database (db.workouts) 
> that has information such as Workout Name, Rating, Completed, etc. I have 2 
> fields(rating, completed) I would like to update via a form. I have tried a 
> couple different methods, but can't seem to get anything to work correctly. 
> The other fields are already entered in the table and should not be changed.
>
> "Rating" should be updated by a set of radio buttons and "Completed" 
> should be set to 0 when the form is submitted (0=complete, 1=current, 
> 2=locked). I have created the form, but have done something wrong because, 
> when it is submitted, a new record is created rather than updating the 
> existing one. 
>
> *Here is my code:*
>
> *Model:*
>
> db.define_table('workouts',
>                 Field('stage'),
>                 Field('w', type="integer"),
>                 Field('workout'),
>                 Field('complete', type="integer"),
>                 Field('d', type="integer"),
>                 Field('rating', requires=IS_IN_SET([1, 2, 3, 4 ]), 
> widget=SQLFORM.widgets.radio.widget),
>                 auth.signature
>                 )
>
> *Controller:*
>
> def workouts():
>     rows = db(db.workouts).select()
>     
>     r = db.workouts(request.args(0))
>     form = SQLFORM(db.workouts, r)
>
>     if form.process().accepted:
>        response.flash = 'form accepted'
>     elif form.errors:
>        response.flash = 'form has errors'
>
>     return locals()
>
> *View:*
>
> ...
>
> {{=form.custom.begin}}
>     {{=form.custom.widget.rating}}
>     {{=form.custom.submit}} 
> {{=form.custom.end}}
>
> ...
>
>
> As I mentioned earlier, I am new and I may be going about this completely 
> the wrong way. So any help would be greatly appreciated. I can provide more 
> information if needed. Thanks.
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to