On Thursday, February 1, 2018 at 11:23:41 PM UTC-5, Yi Liu wrote: > > I figured a work around: > > ``` > if request.controller == 'default': > ctID = ctID.t_trial.f_ctid > else: > ctID = ctID.f_ctid > ``` > > It would be nice to fix from the source. >
There is nothing to be done in appadmin.py -- it simply passes data to appadmin.html, which ultimately calls SQLTABLE. SQLTABLE itself simply passes the field's value and the record containing the value to the represent function -- it does not and cannot "interpret" the represent function -- it is up to you to write a represent function that works with the values that will be passed in. In this case, the difference in behavior between appadmin and your controller is likely due to the fact that you are doing a join in the controller (the selects in appadmin do not involve joins). Without a join, values are referenced as row.fieldname, but with a join, you must use row.tablename.fieldname. If you need your "represent" function to accommodate both cases, then you must code it appropriately: represent=lambda value, row: lastUpdateDateFormat(value, row.get('f_ctid', row.t_trial.f_ctid)) The above first attempts to get row.f_ctid, and if the "f_ctid" key does not exist on the row object (which would be the case when doing a join, unless the join also happens to include a table named "f_ctid"), it then uses the value row.t_trial.f_ctid. Anthony -- 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 web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.