It seems like this is such a common occurrence and that so many people have asked about this already, that there isn't some kind of native helper function within web2py that does this dynamically. Seems like this capability should be specified as an argument(s) to a requires statement:
db.animal.requires=IS_IN_DB(db,'animal.id','%(name)s',onselect=True) where onselect=True causes it to dynamically update according to value selected from animal table.

