Hi Shinichi,

Referenced entities are cached against the entity that's doing the
referencing - so if you have multiple entities referencing the same entity,
it'll be fetched multiple times. You can work around this by passing it in,
as you suggest, or by using a prefetch recipe such as this one:
http://blog.notdot.net/2010/01/ReferenceProperty-prefetching-in-App-Engine

In general, Guido's appstats is an excellent tool for diagnosing these sort
of things: https://sites.google.com/site/appengineappstats/

-Nick Johnson

On Tue, Mar 16, 2010 at 7:39 AM, Shinichi Nakanishi <[email protected]>wrote:

> Does datastore run query for Instructor each time?  Or does it some
> sort of cache thing?
>
> If I have these models:
>
> class Instructor(db.Model)
>    firstName = db.StringProperty()
>    lastName = db.StringProperty()
>
> class Participant(db.Model)
>    firstName = db.StringProperty()
>    lastName = db.StringProperty()
>    workshop = db.ReferenceProperty(Workshop, collection_name =
> "participants")
>
> class Workshop(db.Model)
>    instructor = db.ReferenceProperty(Instructor)
>
> Then if I do the following,
>
> workshop = Workshop.all().get()
> for participant in workshop.participants:
>    someMethod(workshop, participant)
>
> def someMethod(self, workshop, participant)
>    if (workshop.instructor...  # does it run query every time or does it
> cache?
>
> If datastore queries Instructor every time when I do
> workshop.instructor, I thought I should pass instructor as an
> argument.
>
> Shinichi
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<google-appengine%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.
>
>


-- 
Nick Johnson, Developer Programs Engineer, App Engine
Google Ireland Ltd. :: Registered in Dublin, Ireland, Registration Number:
368047

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" 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/google-appengine?hl=en.

Reply via email to