Props to Richard Vezina for posting a similar technique. This is built on his post
>From the book we know that, "Components' objects can be referenced via their position, and helpers act as lists with respect to their components." A little archaeology in the source code tells us that SQLFORM.grid emits a DIV object. When there's an index table involved, the DIV has three components: a DIV, a DIV containing a TABLE and another DIV. # first we get the grid grid = SQLFORM.grid(query) # examine the div at the top of the grid div # for index lists, this div is of the class 'console', # so look for 'console' near the start of the div # there is CERTAINLY a better way to detect an index table, but this works if 'console' in str(grid[0])[0:35]: ## grid[1][0][1] is the DIV, TABLE and TBODY ## so we iterate over TRs in the table body for row in grid[1][0][1]: ## TR acts like a list, so we use some Python list fu row.insert(-1, 'foo') return dict(grid=grid) Done. Haven't cleaned up the table head yet, but it should be similar.