Thank you, Michael! But could I achieve it somehow using hybrid properties and a case statement?
I tried something like: @hybrid_property def time(self): return self._time or self.event.time @time.expression def time(cls): return case([(cls._time != None, cls._time)], else_=cls.parent.time) but that doesn't work: AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object has an attribute 'time' Now again I would have to join the corresponding Parent class and filter then, but I can't do that as part of the case statement (http://stackoverflow.com/a/6994915/1175818), so I wondered of there could be any other trick that sqlalchemy offers. I have no problem in joining to the Parent class, I just don't know how I could do it in the hybrid expression. Regards, Moritz Am Samstag, 21. April 2012 16:15:50 UTC+2 schrieb Michael Bayer: > > > On Apr 21, 2012, at 7:06 AM, Moritz Schlarb wrote: > > > So basically, a Child object may set it's own value for time, but if it's > not set, it uses the value from its parent. > This works, but I would also like to be able to do something like: > > session.query(Child).filter(Child.parent.another_id==2) > > (Which would throw Neither 'InstrumentedAttribute' object nor 'Comparator' > object has an attribute 'another_id') > > > SQLAlchemy doesn't implicitly generate joins when you call attributes from > relationship-bound attribute (here, Child.parent is a relationship-bound > attribute and "another_id" is an attribute you're trying to call from it). > > instead, you need to think in SQL and tell SQLAlchemy that you'd like to > join from Child to Parent: > > query(Child).join(Child.parent).filter(Parent.another_id==2) > > joining is covered in the tutorial at > http://docs.sqlalchemy.org/en/latest/orm/tutorial.html#querying-with-joins. > > Also when you do a query from inside of a @property, you might want to use > object_session() to get at the Session. A similar example to what you're > doing is here: > > > http://docs.sqlalchemy.org/en/latest/orm/relationships.html#building-query-enabled-properties > > > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To view this discussion on the web visit https://groups.google.com/d/msg/sqlalchemy/-/oouab8xG8K4J. 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.