One thing was really missing in a CachedReferenceProperty - cached round trip. Suppose we have the following one-to-many relationship:
class Master(db.Model): pass class Detail(db.Model): master=CachedReferenceProperty(Master)
By cached round trip here I mean that when a master holds a cached collection of details, those details reference the same master, so going back and forth from master to details does not make any database hits.
To make it possible, I replaced collection builder in
_CachedReverseReferenceProperty from this:
res=[c for c in query]
res= for c in query: resolved_name='_RESOLVED_'+self.__prop #WARNING: using internal setattr(c, resolved_name, model_instance) res += [c]
Very ugly, need an idea how to eliminate using internal attribute. The whole source file is here.