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.
>

Reply via email to