you can use a "dynamic" relationship which allows you to say: some_parent.items.order_by(items.c.id.desc())
http://www.sqlalchemy.org/docs/orm/collections.html#dynamic-relationship-loaders On Oct 25, 2011, at 5:02 AM, neurino wrote: > I need to change a collection order_by when a parent instance mapped > attribute changes. > > Something like this: > > parents = Table('parents', metadata, > Column('id', Integer, primary_key=True) > Column('reverse', Boolean, primary_key=True) > ) > items = Table('items', metadata, > Column('id', Integer, primary_key=True) > ) > .... > mapper(parents, Parent, > properties={ > 'items': relationship(Item, > backref='parent', > collection_class=ItemsList, > order_by=items.c.id > ) > } > >>>> parent = session.query(Parent).first() >>>> parent.reverse > False >>>> parent.items > [<Item 1>, <Item 2>, <Item 3>] >>>> parent.reverse = True >>>> parent.items > [<Item 3>, <Item 2>, <Item 1>] > > I already use a custom collection and I could make custom __iter__ > according to first item (if any) `self.parent.reverse` but it seems to > me a bit too tricky. > > Any advice? > > Thank you for your support > > -- > 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. > -- 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.
