For starters:

Refer to
http://arbingersys.blogspot.com/2008/04/google-app-engine-one-to-many-join_26.html?showComment=1244344382942#c5661660955046324965

And Here is the posting about using native GAE properties

http://groups.google.com/group/web2py/browse_thread/thread/7112ef7dee1ccf32/d2b0d24c0e499924?lnk=gst&q=native#d2b0d24c0e499924

So for example you would do

from gluon.contrib.gql import gae
:
:
   db.define_table('ChildItem',
                                # NOTE: web2py provides the 'id'
column automatically
                               db.Field('idParentFolder','reference
MyParent'),
                               db.Field('name','text'),
                               db.Field('gaeParentInstance',
gae.ReferenceProperty(MyParent,
                                              required=False,
collection_name='linksFromChildItemToParent')))

                           )

and define the parent class in a similar fashion.

It is also necessary to add some plumbing to find and track the native
GAE references
which lie underneath the web2py sql objects because the native refs
have to be
put into the collections.

I'll provide more details in some followup posts.

On Jun 25, 2:48 pm, Carles <carle...@gmail.com> wrote:
> Thanks a lot Dave.
>
> There isn't a deadline, tale your time :)
>
> Carles
>
> El 25/06/2010, a las 20:42, dlypka <dly...@gmail.com> escribió:
>
>
>
> > OK will do - please give me a few days...
>
> > On Jun 24, 8:43 pm, Carles Gonzalez <carle...@gmail.com> wrote:
> >> Not to be annoying, but can you post an example?
>
> >> Just to organize the things in my head...
>
> >> Thanks again.
>
> >> On Fri, Jun 25, 2010 at 2:41 AM, Carles Gonzalez <carle...@gmail.com> 
> >> wrote:
> >>> Very interesting!
>
> >>> I'll try tomorrow.
>
> >>> Thanks a lot, Dave.
>
> >>> On Fri, Jun 25, 2010 at 1:21 AM, dlypka <dly...@gmail.com> wrote:
> >>>> I've done a parent - to - many child GAE / web2py implementation using
> >>>> SelfReference  fields (or you can use Reference as well) using the
> >>>> technique for adding native GAE fields into a web2py table definition.
>
> >>>> It gives fantastic retrieval performance because GAE automatically
> >>>> adds the link from the child back into the parent's reference list
> >>>> at the time you create each child.   When you later query for the
> >>>> parent, voila GAE retrieves all the child entities along with it in
> >>>> one backend call!
>
> >>>> Hopefully this technique is relevant to your application.
>
> >>>> I also develop some other tricks for inheriting native GAE classes
> >>>> into your web2py model, though
> >>>> this is less attractive perhaps now that GAE native properties can be
> >>>> directly declared in web2py tables.
>
> >>>> - Dave Lypka.
>
> >>>> On Jun 21, 10:25 am, Carles Gonzalez <carle...@gmail.com> wrote:
> >>>>> Hi,
>
> >>>>> I have developed some applications in web2py, and 2 are running
> >>>>> currently in gae, but now i have serious problem.
>
> >>>>> My current project is a social application, and when i design
> >>>>> (example) the tables to make an user follow the actions other user
> >>>>> (twitter like) I find that many-to-many relationships in app-engine
> >>>>> are not easily supported.
>
> >>>>> From my understanding using the tools present in web2py right i would
> >>>>> need to do a lot of processing in memory, an that would hurt
> >>>>> performance greatly.
>
> >>>>> The pattern proposed by app store developers uses lists and "parent"
> >>>>> relationship:
>
> >>>>> class Message(db.Model):
> >>>>>     sender = db.StringProperty()
> >>>>>     body = db.TextProperty()
>
> >>>>> class MessageIndex(db.Model):
> >>>>>     receivers = db.StringListProperty()
>
> >>>>> indexes = MessageIndex.all(keys_only = True).filter('receivers = ', 
> >>>>> user_id)
> >>>>> keys = [k.parent() for k in indexes)
> >>>>> messages = db.get(keys)
>
> >>>>> For using that pattern in web2py I would need a method for specifying
> >>>>> the parent of a model instance. Can I specify that relationship using
> >>>>> any method I don't know? If not, would it be hard to implement?
>
> >>>>> Thanks in advance!

Reply via email to