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