Oops

yep forgot that all isn't required on a backref set

T

On Jun 6, 6:09 pm, djidjadji <djidja...@gmail.com> wrote:
> # mybaseobject.subobject_set.all().filter(somefilter)
> #[ all() is not a method of the Query class ]
> mybaseobject.subobject_set.filter(somefilter)
> # is equivalent too
> SubObject.all().filter('baseref =', base).filter(somefilter)
>
> Is equivalent to my method because the referenced object
> (baseobject.subobject_set) constructs a Query that does the same thing
> as my line, only it does it based on the key. If you want to ref on
> some other property you have to write it yourself.
>
> From:http://code.google.com/appengine/docs/python/datastore/entitiesandmod...
> ---------------------------------
> ReferenceProperty has another handy feature: back-references. When a
> model has a ReferenceProperty to another model, each referenced entity
> gets a property whose value is a Query that returns all of the
> entities of the first model that refer to it.
> ---------------------------------
>
> 2009/6/6 mscwd01 <mscw...@gmail.com>:
>
>
>
> > I think your solution sounds the most elegant Tim...
>
> > However, I am a little confused. So I would retrieve the desired
> > BaseObject and then how do I retrieve all the SubObjects that hold a
> > reference to it? Can you explain this bit: .subobject_set.all().filter
> > (somefilter)
>
> > Thanks!
>
> > On Jun 6, 1:26 am, Tim Hoffman <zutes...@gmail.com> wrote:
> >> Even easier would be to have every subobject hold a reference to the
> >> parent BaseObject
>
> >> Then given any BaseObject  you can
>
> >> mybaseobject.subobject_set.all().filter(somefilter)
>
> >> T
>
> >> On Jun 6, 7:27 am, djidjadji <djidja...@gmail.com> wrote:
>
> >> > You can, do two calls to the datastore
>
> >> > # first get the required BaseObject
> >> > base = BaseObject.all().filter(.......).get()
> >> > if not base: return
> >> > # then get the SubObjects that link to this BaseObject with the right 
> >> > fields
> >> > subobjs = SubObject.all().filter('baseref =',
> >> > base.reffield).filter('somefield >', subSelectValue).fetch(1000)
> >> > if not subobjs: return
>
> >> > 2009/6/5 mscwd01 <mscw...@gmail.com>:
>
> >> > > So the relational model I mentioned would be the better option?
>
> >> > > Its a pity there isnt a feature to select desired baseObjects and then
> >> > > search within SubObjects linked to that object within a DataStore
> >> > > call...
>
> >> > > On Jun 5, 9:50 pm, djidjadji <djidja...@gmail.com> wrote:
> >> > >> One huge object would be very inefficient. You have to retrieve the
> >> > >> whole lot every time you get() a BaseObject. You are limited to a
> >> > >> total size of 1 Mbyte per object.
>
> >> > >> Much cleaner is the approach with the two object Models. Now you can
> >> > >> have an unlimited number of SubObjects and let the index do most of
> >> > >> the work of fetching only the SubObjects that are important.
>
> >> > >> 2009/6/5 mscwd01 <mscw...@gmail.com>:
>
> >> > >> > Hi,
>
> >> > >> > I have a question regarding the best method of storing a complex
> >> > >> > object which may grow to be very large in size.
>
> >> > >> > I have an object 'BaseObject' which has a field of type
> >> > >> > List<SubObject>. I wish to add many SubObject's to BaseObjects,
> >> > >> > perhaps millions. When querying a SubObject I will first retrieve 
> >> > >> > the
> >> > >> > BaseObject and then perform a query on its list of SubObjects to 
> >> > >> > find
> >> > >> > the objects I need.
>
> >> > >> > Now, is it a good idea to store objects in this way? I.e. having a
> >> > >> > BaseObject which comprises an enormous list of SubObjects?
>
> >> > >> > Another method of doing this would be to take the relational 
> >> > >> > database
> >> > >> > approach and have a BaseObject and SubObjects table where SubObjects
> >> > >> > reference BaseObjects via an ID. However, I would really like to
> >> > >> > maintain an object approach.
>
> >> > >> > What are your views on this? Any feedback would be greatly
> >> > >> > appreciated.
>
> >> > >> > Thanks
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to