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