Looks like you just fixed it. Tested and working both ways now: >>> rows = db(purchase.product==product.id)(purchase.buyer==buyer.id).select()
>>> rows.as_dict(key="buyer.id") or >>>rows.as_dict(key=lambda row: row['buyer']['id']) On Oct 29, 2:18 pm, "mr.freeze" <nat...@freezable.com> wrote: > svn trunk head. > > if isinstance(key,str) and key.count('.')==1: > (table, field) = key.strip('.') > > Throws an error since you're not splitting the key. > > On Oct 29, 2:16 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > 1.69.2 or 1.70.1 ? > > > On Oct 29, 2:13 pm, "mr.freeze" <nat...@freezable.com> wrote: > > > > I think this line (3149): > > > (table, field) = key.strip() > > > > Should be: > > > (table, field) = key.split(".") > > > > On Oct 29, 1:56 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > > > OK, I merged yours and mine in trunk. > > > > > On Oct 29, 1:44 pm, "mr.freeze" <nat...@freezable.com> wrote: > > > > > > I am still testing your solution but here is mine in the meantime. It > > > > > lets you say rows.as_list(key="buyer.id") for joins > > > > > > def as_dict(self, > > > > > key='id', > > > > > compact=True, > > > > > storage_to_dict=True, > > > > > datetime_to_str=True): > > > > > > rows = self.as_list(compact, storage_to_dict, datetime_to_str) > > > > > out = {} > > > > > pcs = key.split(".") if "." in key else None > > > > > for r in rows: > > > > > if r.has_key(key): > > > > > out[key] = r[key] > > > > > elif pcs: > > > > > for i in range(0,len(pcs)-1): > > > > > val = r[pcs[i]][pcs[i+1]] > > > > > out[val] = r > > > > > > return out > > > > > > On Oct 29, 1:03 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > > > > > it seems to me if you join as_dict, the key cannot be always a > > > > > > single > > > > > > field. I have a proposed solution in trunk > > > > > > > On Oct 29, 12:22 pm, "mr.freeze" <nat...@freezable.com> wrote: > > > > > > > > as_list seems to be recursing properly now. Same error on > > > > > > > as_dict but > > > > > > > I am digging deeper. > > > > > > > > On Oct 29, 12:12 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > > > > > > > I actually think i fixed the recursive dictit but it still > > > > > > > > could use > > > > > > > > some testing. > > > > > > > > > Massimo > > > > > > > > > On Oct 29, 11:58 am, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > > > > > > > > True. The issue with JOIN is not an easy one to fix. > > > > > > > > > > Can you send me a patch about one or both issues? > > > > > > > > > > Massimo > > > > > > > > > > On Oct 29, 11:43 am, "mr.freeze" <nat...@freezable.com> wrote: > > > > > > > > > > > Also, the as_list function only converts the first level of > > > > > > > > > > DALStorage > > > > > > > > > > to dict when storage_to_dict is true. Both function > > > > > > > > > > (as_list,as_dict) > > > > > > > > > > should probably recurse through all level right? > > > > > > > > > > > On Oct 29, 11:27 am, "mr.freeze" <nat...@freezable.com> > > > > > > > > > > wrote: > > > > > > > > > > > > Works for normal queries but throws a KeyError on id for > > > > > > > > > > > joins. > > > > > > > > > > > > On Oct 29, 10:12 am, mdipierro <mdipie...@cs.depaul.edu> > > > > > > > > > > > wrote: > > > > > > > > > > > > > ok, in trunk, take a look. > > > > > > > > > > > > > On Oct 29, 9:26 am, Renato-ES-Brazil > > > > > > > > > > > > <caliari.ren...@gmail.com> wrote: > > > > > > > > > > > > > > I agree. > > > > > > > > > > > > > > On 29 out, 12:19, "mr.freeze" <nat...@freezable.com> > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > I think it is worth adding an as_dict function to > > > > > > > > > > > > > > Rows personally. > > > > > > > > > > > > > > > On Oct 29, 9:01 am, mdipierro > > > > > > > > > > > > > > <mdipie...@cs.depaul.edu> wrote: > > > > > > > > > > > > > > > > My bad again > > > > > > > > > > > > > > > > item_dict=dict([(r['id'],r) for r in > > > > > > > > > > > > > > > db(db.items.id > 0).select > > > > > > > > > > > > > > > ().as_list()]) > > > > > > > > > > > > > > > > On Oct 29, 8:58 am, Fran > > > > > > > > > > > > > > > <francisb...@googlemail.com> wrote: > > > > > > > > > > > > > > > > > On Oct 29, 1:52 pm, mdipierro > > > > > > > > > > > > > > > > <mdipie...@cs.depaul.edu> wrote: > > > > > > > > > > > > > > > > > > oops.there should be no sterisk. > > > > > > > > > > > > > > > > > item_dict=dict([(r.id,r) for r in > > > > > > > > > > > > > > > > > db(db.items.id > 0).select()]) > > > > > > > > > > > > > > > > > Great, that works ;) > > > > > > > > > > > > > > > > > This one still fails: > > > > > > > > > > > > > > > > item_dict=dict([(r.id,r) for r in > > > > > > > > > > > > > > > > db(db.items.id > 0).select().as_list > > > > > > > > > > > > > > > > ()]) > > > > > > > > > > > > > > > > > 'dict' object has no attribute 'id' > > > > > > > > > > > > > > > > > Of course, this is already a dict: > > > > > > > > > > > > > > > > db(db[table].id > 0).select().as_list() > > > > > > > > > > > > > > > > > F --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web2py@googlegroups.com To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/web2py?hl=en -~----------~----~----~----~------~----~------~--~---