Thanks, it is easy and works just as expected.

Using declarative it looks like this:

Parent.boys = relation(Child, viewonly=True,
        primaryjoin=(and_(Child.pid==Parent.id, Child.bg=='b')))
Parent.girls = relation(Child, viewonly=True,
        primaryjoin=(and_(Child.pid==Parent.id, Child.bg=='g')))

Note that you don't specify backref='parent' because that is already defined
on the children relation. Also added viewonly=True just to make sure SA
won't be tempted to use this relation for persisting anything; not needed
here, but could be important using the same idea in more complex
associations.

-- 
Mike Conley



On Fri, Mar 27, 2009 at 11:51 AM, David Gardner
<dgard...@creatureshop.com>wrote:

>  Try this:
>
> mapper(Parent, parent_table, properties = {
>               'boys':relation(Child, backref='parent',
> primaryjoin=(and_(child_table.c.pid=parent_table.c.id, child_table.c.gb
> =='b'),
>               'girls':relation(Child, backref='parent',
> primaryjoin=(and_(child_table.c.pid=parent_table.c.id, child_table.c.gb
> =='g')
>               })
>
>
> Mike Conley wrote:
>
> How do I create a relation that filters the list property when accessing
> the data?
>
> class Parent(Base):
>     __tablename__ = 'parent'
>     id = Column(Integer, primary_key=True)
>     name = Column(String)
>
> class Child(Base):
>     __tablename__ = 'child'
>     id = Column(Integer, primary_key=True)
>     pid = Column(Integer, ForeignKey('parent.id'))
>     name = Column(String)
>     bg = Column(String)  # b=boy, g=girl
>
> Parent.children = relation(Child, backref='parent')
>
> Gives me a relation that can be used to get a list of all children
>
>
>
>
> Question is how to specify a relation that gives a list of the boys
>
> Parent.boys = relation(Child, ??????????????????)
>
> I suspect it is something pretty straight forward, but can't figure it out
>
> --
> Mike Conley
>
>
>
>
>
> --
> David Gardner
> Pipeline Tools Programmer, "Sid the Science Kid"
> Jim Henson Creature shopdgard...@creatureshop.com
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to