The read-only version was all I needed, thanks.

On Jan 17, 3:25 pm, Michael Bayer <mike...@zzzcomputing.com> wrote:
> On Jan 17, 2010, at 9:20 AM, Adrian wrote:
>
> > Hi,
>
> > is there an easy way to apply a function to the items returned by
> > association_proxy? Currently, I have a setup like this: A->B->C, both
> > one-to-many relations; A.C (association_proxy('B','C')) returns a list
> > of lists but I would like to apply a function (list(chain.from_iterable
> > (x))) that flattens it to a simple list. What what be the best way to
> > implement this?
>
> you should be able to pass proxy_factory to your association_proxy:
>
> foo = association_proxy("B", "C", proxy_factory=lambda coll, creator, value: 
> list(chain.from_iterable(coll)))
>
> that returned list though won't interact in the other direction, i.e. when 
> you append or remove items from it no events will propagate up to the C or B 
> since above we're not adding handlers for that (I'm assuming this isn't 
> needed since you can't determine that from a flattened list anyway).
>
> In that case association_proxy here wouldn't even be needed, a read-only 
> version is just:
>
> class A(object):
>     @property
>      def foo(self):
>           reutrn list(chain.from_iterable(b.C for b in self.B))
>
>
>
> > Cheers,
>
> > Adrian
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "sqlalchemy" group.
> > To post to this group, send email to sqlalch...@googlegroups.com.
> > To unsubscribe from this group, send email to 
> > sqlalchemy+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://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 sqlalch...@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