Now you can also do this (complete program):
# model
db=DAL()
from gluon.tools import Auth
auth=Auth(db)
auth.define_tables()
db.define_table('person',Field('name'))
db.define_table('dog',Field('name'),Field('image','upload'),Field('owner',db.person))
if db(db.person).isempty():
from gluon.contrib.populate import populate
populate(db.person,300)
populate(db.dog,300)
db.commit()
# controller
@auth.requires_login()
def index():
form=SQLFORM.demo(db.person) #<<<<<
return dict(form=form)
#<<<< will blow your mind!
It is like SQLFORM.grid but also deals with representation of
references. The source code is simple.