Ok, yes, it may not have some field that are to None... I had issue with that that I have patch my compute function for. I should be the same...
Thank you Massimo to point me this out. Richard On Thu, Jun 20, 2013 at 5:02 PM, Massimo Di Pierro < massimo.dipie...@gmail.com> wrote: > I think the problem is that your form does not contain enough info for the > computed field. You correctly pull them from DB (in row) and pass to the > compute function. > > > On Thursday, 20 June 2013 12:13:16 UTC-5, Richard wrote: >> >> Hello, >> >> I don't understand why I have to redefine my compute field function... >> >> I have a compute field like this one : >> >> # model >> db.define_table('mytable', >> Field('f1', 'string'), >> Field('review', 'boolean'), >> Field('record_review_status', compute=lambda record: >> return_computed(record, request.args(0))) >> >> # contoller >> def fun(): >> form = SQLFORM.factory(Field(...)) >> session.rows = db(db[request.args(0)].review == False).select() >> table = SQLTABLE(session.rows...) >> form.process().accepted: >> for r in session.rows: >> row = db[request.args(0)](r.id) >> row.update_record(review='**TRUE') >> db.commit() >> row = db[request.args(0)](r.id) >> *row.record_review_status = return_record_review_status(row, >> request.args(0)) # here I need to redefine my record_review_status compute >> field or it not get computed* >> row.update_record() >> db.commit() >> ... >> >> Note : It is pseudo code, so it may seems dumb or not working, I just try >> to make an example of what going on in my app... >> >> In the book it is said that if we try to update record without passing, >> web2py tries to compute compute field base on orther field value... >> >> http://web2py.com/books/**default/chapter/29/06?search=** >> compute#Computed-fields<http://web2py.com/books/default/chapter/29/06?search=compute#Computed-fields> >> >> By the way, this part of the book is not pretty clear... For instance do >> I have to leave update() of update_record() blank in order to get my >> compute field to be computed. >> >> Also, it is not exactly clear to me why my compute field not get compute >> on row.update_record(review='**TRUE')... What I understand is that I >> need to explicitly update my compute field, but the way to do it seems to >> passing not paramaters to update() or update_record(). >> >> In my case, it seems that my compute function can't get the 'TRUE' for >> review only once the update(review='TRUE') is committed... I try to remove >> the line in bold, because it already in my model, but it is not working, my >> compute field never get updated it status. >> >> Thanks to clarify this to me. >> >> Richard >> > -- > > --- > 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. > > > -- --- 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.