Thank you Michael!

I've got a follow-up question if anyone's up to it.  I've changed my
classes and mappings to the following:

class QType(object):
    ...
    questions = association_proxy('joinObj', 'questions',
creator=_create_joinObj)
    sections = association_proxy('joinObj', 'sections')

class Question(object):
    ...
    section = association_proxy('joinObj', 'section')

mapper(QJoin, join_table, properties={
    'type'      :relation(QType),
    'sections'  :relation(Section, backref='parent'),
    'questions' :relation(Question, backref='parent')
})
mapper(Question, questions_table)
mapper(Section, sections_table)
mapper(QType, types_table, properties={
    'joinObj'   :relation(QJoin)
})

And it's working, thanks to Michael's help.  Here's my question:  I
have three interrelated thing: Questions, Sections, Types.  I
struggling to do the mappings that would allow these:

1) Given a Type, what are all the Sections (ignoring the Questions;
grouping by Sections)?
   my_type = Type()
   my_sections = my_type.sections  ??

2) Given a Type and Section, what are the Questions?
   my_type = Type()
   my_questions = my_type.sections[0].questions  ??

3) Given a Type, what are all the Questions (ignoring the Sections;
grouping by Questions)?
   my_type = Type()
   all_questions = my_type.questions  ??

I appreciate the help,

Matt

On May 5, 3:32 pm, Michael Bayer <[EMAIL PROTECTED]> wrote:
> On May 5, 2008, at 5:11 PM, Matt Haggard wrote:
>
>
>
>
>
> > I've got a kind of goofy schema, and I'm trying to map it.  I've got
> > Questionnaire types, Sections and Questions all joined in a single
> > association table:
>
> > join_table : type_id | section_id | question_id
> > questions_table : id | question_text
> > sections_table : id | section_name
> > types_table : id | type_name
>
> > So, a single question can appear in different sections for different
> > types.  How do I do the mapping?  This is what I've got, and it
> > doesn't work.
>
> > mapper(Question, questions_table)
> > mapper(Section, sections_table, properties={
> >    'questions':relation(Question, backref='section',
> > secondary=join_table)
> > })
> > mapper(QType, types_table, properties={
> >    'sections':relation(Section,
> >        backref = 'type',
> >        secondary = join_table
> >        primaryjoin = types_table.c.id==join_table.c.type_id,
> >        secondaryjoin = join_table.c.section_id==sections_table.id
> >        )
> > })
>
> your table is not a many-to-many table, its just another entity table
> with associations to other entities.  "secondary" is not the
> appropriate construct in this case; use an association mapping :
>
> http://www.sqlalchemy.org/docs/04/mappers.html#advdatamapping_relatio...
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to