Without testing it out it sounds like you are describing the default behavior from the list:<type> Fields. I think there is a multiple = True argument perhaps. Check out http://web2py.com/books/default/chapter/29/06?search=list%3A#Many-to-many,-list:<type>,-and-contains about 2/3 down the page if it soesn't scroll automatically for you.
--