I think you need inheritance : http://web2py.com/book/default/chapter/06#Table-Inheritance
Richard On Sun, Jul 3, 2011 at 1:15 AM, Luis Goncalves <lgoncal...@gmail.com> wrote: > Hello! > > How do I make a database table where the fields are defined by another > table? > > For example, suppose some users of my system are event organizers, and they > can define what fields would belong in a person's profile. > > Then, attendees of that event have to fill out a profile with those > specific fields. > > What is the best way to represent this information (the fields relevant for > an event's profile, and the event profiles of users) in a database? > > What I have been thinking of so far is to define a table that holds the > definitions of profile fields: > > db.define_table('event_profile_field', > Field('event', db.event), > Field('display_title','text'), > Field('data_type', > requires=IS_IN_SET('string','text','checkbox','list')), > Field('display_order', 'int')) > > and then each user's profile is built up of multiple entries of the > following: > > db.define_table('event_profile_entry', > Field('person', db.person), > Field('event', db.event), > Field('event_profile_field', db.event_profile_field), > Field('data') # XXX we need data to be of different types > > However, as indicated above by the comment, I'm not sure if it is possible > to store different data types in the event_profile_entry.data field. > (I suppose I could just make it be 'text' type and have the code know that > a checkbox can only be True or False, for example). > > Is there a more efficient/smarter way to do this? > > Thanks, > Luis. >