What you say is true, however for argument's sake, how could I achieve
the above with the 4th table?

In my situation, the 3 tables have different fields (but I didn't have
access to the file so I simply made them the same in the example here.

Thanks.

On Jan 6, 1:24 am, Andrew <awillima...@gmail.com> wrote:
> I think this is more of a data modeling question than web2py.
> I would have one table called "content" with an extra column
> "content_type" .  You could define queries over the top if you just
> want one ofthe three.
>
> Your M:M table logically joins to "content".  You sort of have three
> subtype tables, but they are identical in structure so there is no
> reason to separate,
>
> On Jan 6, 5:22 am, lyn2py <lyn...@gmail.com> wrote:
>
>
>
>
>
>
>
> > I have tables with individual properties,
>
> > db.define_table('article',
> >   Field('title', 'string', length=255,required=True),
> >   Field('description', 'text',required=True),
> > )
> > db.define_table('post',
> >   Field('title', 'string', length=255,required=True),
> >   Field('description', 'text',required=True),
> > )
> > db.define_table('page',
> >   Field('title', 'string', length=255,required=True),
> >   Field('description', 'text',required=True),
> > )
>
> > And I have a table with many-to-many relationship (with different
> > tables):
>
> > db.define_table('action',
> >   Field('user_id','reference
> > auth_user',default=auth.user_id,required=True),
>
> > Field('action','string',requires=IS_IN_SET(('fav','subscribe','report','fol 
> > low')),required=True),
> >   Field('table',requires=???,required=True),
> >   Field('table_id','integer',default=???,required=True),
> > )
>
> > My questions:
> > 1.. The field, "table" is actually one of the tables, article/post/
> > page. Is the only correct way to use
> > requires=IS_IN_SET(('article','post','page')) ?
>
> > 2.. "table_id" is actually dependent on the "table" selected. what
> > should I put for "default=???"
>
> > 3.. Can I set a different set of IS_IN_SET for "action" field,
> > depending on the "table" field chosen?
>
> > 4.. Finally, if the above is the wrong approach, how should I do it
> > correctly (best practice?)
>
> > Thanks!

Reply via email to