Need some insights into the below issue. The functionality is working correctly in the SQLForm.grid but doesn't work when returning data as json under certain circumstances as mentioned below.
When using the rows.render and passing multiple fields as argument there is an exception "web2py.app.projectmgmt - WARNING - 'NoneType' object has no attribute 'first_name'" the exception is happening on the db.environment.onboarding_resource. When the represent for the Field is removed in the model it works as expected by returning the username correctly. It is not working when trying to return the first and last names. def getenvironments(): rows = list() try: rows = db(db.environment).select() #Below works print rows.render(0, fields=[db.environment.onboarding_resource]) # Below throws an exception ( 'NoneType' object has no attribute 'first_name') print rows.render(0, fields=[db.environment.onboarding_resource,db.environment.request]) except Exception as e: logger.warn(str(e)) return response.json(rows) Model definition -------------------------------------------- db.define_table('environment', Field('request', db.request, requires=IS_EMPTY_OR(IS_IN_DB(db, 'request.id','%(requested_item)s %(alt_CI_ID)s'))), Field('onboarding_resource', db.auth_user, represent = lambda id, row: '%s %s' %(db.auth_user(id).first_name,db.auth_user(id).last_name), requires=IS_EMPTY_OR(IS_IN_DB(db, 'auth_user.id','%(first_name)s %(last_name)s'))), Field('delivered_date', type='date'), Field('missed_reason', db.missed_reason, requires=IS_EMPTY_OR(IS_IN_DB(db,'missed_reason.id','%(reason_code)s')))) -- 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.