Very interesting, i didn't know about collection_name and the associated query.
You are shedding some light on doing relationships the GAE way. Thanks again. On Sat, Jun 26, 2010 at 8:52 AM, dlypka <dly...@gmail.com> wrote: > > 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!