You left out some critical code from the original question -- your Javascript sends each post request twice:
function send_data(id){ $.post("{{=URL('contest','flip_contest_status')}}", {id: id} ); $.post("{{=URL('contest','flip_contest_status')}}", {id: id} ) .done(function(data) { window.location.replace("{{URL('contest','configure')}}"); }); } If you delete that first $.post line, everything seems to work fine. One other problem, though: def flip_contest_status(): id = request.post_vars.id row = db(db.contest.id == 13).select(db.contest.running, db.contest.name ).first() You probably forgot to revert after debugging, but above you have hard-coded and id of 13 into the query. Anthony On Monday, July 1, 2013 10:55:17 PM UTC-4, Ahmad Faiyaz wrote: > > here is the database definition: > > db.define_table('contest', Field('name', length=128 ), > Field('contest_host', length=128,), Field('duration', 'time' ), > Field('time_passed','time', default = 0), Field('rank_frozen','time', > default = 0), Field('running',length= 10, readable=False, default = "no"), > Field('lang')) > > db.contest.name.requires = [IS_NOT_IN_DB(db,db.contest.name), > IS_NOT_EMPTY()] > db.contest.contest_host.requires = [IS_NOT_EMPTY()] > db.contest.duration.requires = [IS_NOT_EMPTY()] > db.contest.lang.requires=IS_IN_SET(['C', 'C++', 'JAVA', 'Python'], > multiple=True) > db.contest.lang.widget = hmultiselect_widget > > > then here is my controller which will show the SQLFORM Grid: > @auth.requires_permission('manage') > def configure(): > grid = SQLFORM.grid(db.contest,fields = [db.contest.id, > db.contest.name, db.contest.contest_host, db.contest.duration, > db.contest.time_passed , db.contest.rank_frozen],create=False, links = > [contest_buttons] , details=False ) > return dict(grid = grid) > > Then here is my code which will flip the value of db.contest.running > def flip_contest_status(): > id = request.post_vars.id > row = db(db.contest.id == id).select(db.contest.running, > db.contest.name).first() > value = "" > if row.running == 'no': > value = 'yes' > #session.flash = row.running > elif row.running == 'yes': > value = 'no' > #session.flash = row.running > else: > abd = "sd" > db(db.contest.id == id).update(running = value) > session.flash = row.running > return locals() > > > Here is my db.contest table: > > contest.id<http://localhost:8000/SAI_BETA/appadmin/select/db?orderby=contest.id> > > contest.name<http://localhost:8000/SAI_BETA/appadmin/select/db?orderby=contest.name> > > contest.contest_host<http://localhost:8000/SAI_BETA/appadmin/select/db?orderby=contest.contest_host> > > contest.duration<http://localhost:8000/SAI_BETA/appadmin/select/db?orderby=contest.duration> > > contest.time_passed<http://localhost:8000/SAI_BETA/appadmin/select/db?orderby=contest.time_passed> > > contest.rank_frozen<http://localhost:8000/SAI_BETA/appadmin/select/db?orderby=contest.rank_frozen> > > contest.running<http://localhost:8000/SAI_BETA/appadmin/select/db?orderby=contest.running> > > contest.lang<http://localhost:8000/SAI_BETA/appadmin/select/db?orderby=contest.lang> > > 13 <http://localhost:8000/SAI_BETA/appadmin/update/db/contest/13> Testme > 07:33:5306:33:54 06:33:55no|C++| > 14<http://localhost:8000/SAI_BETA/appadmin/update/db/contest/14> > faiyaz26 me06:34:2307:34:2206:34:25 no|C| > > I used session.flash to check what kind of value is fetching, and it is > showing *yes* for contest.id = 13 and 14 > > If i update the value of db.contest.running for db.contest.id =13 to yes > from no, it shows *no* then > > what to do then ? > > You can download the whole w2p file from here: > https://dl.dropboxusercontent.com/u/34972503/web2py.app.SAI_BETA.w2p > > username: administrator > pass: admin1234 > > then go to contest/configure to check !! use start , stop button to update > the status. > > On Tue, Jul 2, 2013 at 8:40 AM, Anthony <abas...@gmail.com > <javascript:>>wrote: > >> Can you show the code you are now using and describe the workflow of how >> the record gets updated and how you are then attempting to view the updated >> record? >> >> Anthony >> >> On Monday, July 1, 2013 8:37:32 PM UTC-4, Ahmad Faiyaz wrote: >> >>> weird things happening, when i check the db table with appadmin, it >>> shows for contest.running = yes [ updated the value with sqlform.grid ] , >>> but when i fetch the row with DAL on app, it shows contest.running = no [ >>> which is the default ] >>> >>> why ? >>> >>> On Tue, Jul 2, 2013 at 6:18 AM, Ahmad Faiyaz <faiy...@gmail.com> wrote: >>> >>>> thanks, but it sometimes work, sometimes doesn't !! what can be the >>>> problem ! >>>> >>>> On Tue, Jul 2, 2013 at 5:34 AM, Alex <mrau...@gmail.com> wrote: >>>> >>>>> from the documentation: >>>>> update_record should not be confused with >>>>> >>> row.update(name='Curt') >>>>> because for a single row, the method update updates the row object but >>>>> not the database record, as in the case of update_record >>>>> >>>>> so you should use update_record instead. or even better: >>>>> db(db.contest.id == id ).update(running = value) >>>>> >>>>> which only results in one sql statement. >>>>> >>>>> Alex >>>>> >>>>> Am Dienstag, 2. Juli 2013 00:23:16 UTC+2 schrieb Ahmad Faiyaz: >>>>> >>>>>> Hello, >>>>>> i am trying to update a row on a db table, but it is not updating, >>>>>> what is the problem ? >>>>>> >>>>>> my db table definition: >>>>>> db.define_table('contest', Field('name', length=128 ), >>>>>> Field('contest_host', length=128,), Field('duration', 'time' ), >>>>>> Field('time_passed','time', default = 0), Field('rank_frozen','time', >>>>>> default = 0), Field('running',length= 10, readable=False, default = >>>>>> "no"), >>>>>> Field('lang')) >>>>>> >>>>>> My update function: >>>>>> >>>>>> def flip_contest_status(): >>>>>> id = request.post_vars.id >>>>>> row = db(db.contest.id == id ).select().first() >>>>>> value = "no" >>>>>> con = row.running >>>>>> if con is "no": >>>>>> value = "yes" >>>>>> db(db.contest.id == id ).select().first().update(**running = >>>>>> value) >>>>>> session.flash = row.name + " mode changed to "+ value >>>>>> return locals() >>>>>> >>>>>> it doesn't update my db row !! >>>>>> >>>>>> What to do ? >>>>>> >>>>>> -- >>>>> >>>>> --- >>>>> You received this message because you are subscribed to a topic in the >>>>> Google Groups "web2py-users" group. >>>>> To unsubscribe from this topic, visit https://groups.google.com/d/** >>>>> topic/web2py/1YuETESUji8/**unsubscribe<https://groups.google.com/d/topic/web2py/1YuETESUji8/unsubscribe> >>>>> . >>>>> To unsubscribe from this group and all its topics, send an email to >>>>> web2py+un...@**googlegroups.com. >>>>> >>>>> For more options, visit >>>>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>>>> . >>>>> >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> >>>> Regards, >>>> Ahmad Faiyaz >>>> >>> >>> >>> >>> -- >>> >>> Regards, >>> Ahmad Faiyaz >>> >> -- >> >> --- >> You received this message because you are subscribed to a topic in the >> Google Groups "web2py-users" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/web2py/1YuETESUji8/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> web2py+un...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > > > -- > > Regards, > Ahmad Faiyaz > -- --- 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 web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.