Stephen, the implementation problem you mention is only on the client side and the workaround you mention works just fine. But in order for your code to work you need to give the form access to the table.
It is usually better to create a server module and collect the data on the server side, then pass a list of dictionaries to the form. It is better because:
- More power: you have full Python, not a 2.7 limited version
- Faster: you access all the tables you want while you build your list of dictionaries and return it to the form in one shot. Just one round trip. (See here)
- Safer: no need to give table access to the form.